aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/util/Util.java
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2015-08-21 17:03:43 -0700
committerScott Jackson <daneren2005@gmail.com>2015-08-21 17:03:43 -0700
commitc777c62aea3a7b251e8f6c907a60ebf35ddbb8c8 (patch)
tree15df7a7ea0fdd94e89ba0113d8e1b186eef4d93d /app/src/main/java/github/daneren2005/dsub/util/Util.java
parent9f597b5135b85b99755cd791e32796b89fbf81dd (diff)
parent5a175f3b94cb8b5bd078e373f4a25b7ab65c4cc8 (diff)
downloaddsub-c777c62aea3a7b251e8f6c907a60ebf35ddbb8c8.tar.gz
dsub-c777c62aea3a7b251e8f6c907a60ebf35ddbb8c8.tar.bz2
dsub-c777c62aea3a7b251e8f6c907a60ebf35ddbb8c8.zip
Merge branch 'SlideUpPanel2'
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/util/Util.java')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/Util.java99
1 files changed, 79 insertions, 20 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/util/Util.java b/app/src/main/java/github/daneren2005/dsub/util/Util.java
index 032facd6..ff962488 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/Util.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/Util.java
@@ -19,7 +19,8 @@ package github.daneren2005.dsub.util;
import android.annotation.TargetApi;
import android.app.Activity;
-import android.app.AlertDialog;
+import android.support.annotation.StringRes;
+import android.support.v7.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
@@ -45,12 +46,18 @@ import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.util.Log;
import android.view.Gravity;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import github.daneren2005.dsub.R;
+import github.daneren2005.dsub.activity.SettingsActivity;
+import github.daneren2005.dsub.activity.SubsonicFragmentActivity;
+import github.daneren2005.dsub.adapter.DetailsAdapter;
import github.daneren2005.dsub.domain.MusicDirectory;
import github.daneren2005.dsub.domain.PlayerState;
import github.daneren2005.dsub.domain.RepeatMode;
+import github.daneren2005.dsub.domain.ServerInfo;
import github.daneren2005.dsub.receiver.MediaButtonIntentReceiver;
import github.daneren2005.dsub.service.DownloadService;
@@ -68,10 +75,14 @@ import java.lang.reflect.Method;
import java.security.MessageDigest;
import java.text.DecimalFormat;
import java.text.NumberFormat;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
+import java.util.List;
import java.util.Locale;
+import java.util.TimeZone;
/**
* @author Sindre Mehus
@@ -249,6 +260,32 @@ public final class Util {
SharedPreferences prefs = getPreferences(context);
return prefs.getString(Constants.PREFERENCES_KEY_THEME, null);
}
+ public static int getThemeRes(Context context) {
+ return getThemeRes(context, getTheme(context));
+ }
+ public static int getThemeRes(Context context, String theme) {
+ if(context instanceof SubsonicFragmentActivity || context instanceof SettingsActivity) {
+ if ("dark".equals(theme)) {
+ return R.style.Theme_DSub_Dark_No_Actionbar;
+ } else if ("black".equals(theme)) {
+ return R.style.Theme_DSub_Black_No_Actionbar;
+ } else if ("holo".equals(theme)) {
+ return R.style.Theme_DSub_Holo_No_Actionbar;
+ } else {
+ return R.style.Theme_DSub_Light_No_Actionbar;
+ }
+ } else {
+ if ("dark".equals(theme)) {
+ return R.style.Theme_DSub_Dark;
+ } else if ("black".equals(theme)) {
+ return R.style.Theme_DSub_Black;
+ } else if ("holo".equals(theme)) {
+ return R.style.Theme_DSub_Holo;
+ } else {
+ return R.style.Theme_DSub_Light;
+ }
+ }
+ }
public static void setTheme(Context context, String theme) {
SharedPreferences.Editor editor = getPreferences(context).edit();
editor.putString(Constants.PREFERENCES_KEY_THEME, theme);
@@ -256,15 +293,7 @@ public final class Util {
}
public static void applyTheme(Context context, String theme) {
- if ("dark".equals(theme)) {
- context.setTheme(R.style.Theme_DSub_Dark);
- } else if ("black".equals(theme)) {
- context.setTheme(R.style.Theme_DSub_Black);
- } else if ("holo".equals(theme)) {
- context.setTheme(R.style.Theme_DSub_Holo);
- } else {
- context.setTheme(R.style.Theme_DSub_Light);
- }
+ context.setTheme(getThemeRes(context, theme));
SharedPreferences prefs = Util.getPreferences(context);
if(prefs.getBoolean(Constants.PREFERENCES_KEY_OVERRIDE_SYSTEM_LANGUAGE, false)) {
@@ -276,7 +305,7 @@ public final class Util {
public static boolean getDisplayTrack(Context context) {
SharedPreferences prefs = getPreferences(context);
- return prefs.getBoolean(Constants.PREFERENCES_KEY_DISPLAY_TRACK, false);
+ return prefs.getBoolean(Constants.PREFERENCES_KEY_DISPLAY_TRACK, true);
}
public static int getMaxBitrate(Context context) {
@@ -809,6 +838,19 @@ public final class Util {
return builder.toString();
}
+ public static String formatDate(Context context, String dateString) {
+ try {
+ boolean isDateNormalized = ServerInfo.checkServerVersion(context, "1.11");
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
+ if (isDateNormalized) {
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
+ return formatDate(dateFormat.parse(dateString));
+ } catch(ParseException e) {
+ return dateString;
+ }
+ }
public static String formatDate(Date date) {
if(date == null) {
return "Never";
@@ -1101,6 +1143,32 @@ public final class Util {
((TextView)dialog.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
}
+ public static void showDetailsDialog(Context context, @StringRes int title, List<Integer> headers, List<String> details) {
+ List<String> headerStrings = new ArrayList<>();
+ for(@StringRes Integer res: headers) {
+ headerStrings.add(context.getResources().getString(res));
+ }
+ showDetailsDialog(context, context.getResources().getString(title), headerStrings, details);
+ }
+ public static void showDetailsDialog(Context context, String title, List<String> headers, List<String> details) {
+ ListView listView = new ListView(context);
+ listView.setAdapter(new DetailsAdapter(context, R.layout.details_item, headers, details));
+ listView.setDivider(null);
+ listView.setScrollbarFadingEnabled(false);
+
+ new AlertDialog.Builder(context)
+ // .setIcon(android.R.drawable.ic_dialog_info)
+ .setTitle(title)
+ .setView(listView)
+ .setPositiveButton(R.string.common_close, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int i) {
+ dialog.dismiss();
+ }
+ })
+ .show();
+ }
+
public static void sleepQuietly(long millis) {
try {
Thread.sleep(millis);
@@ -1141,15 +1209,6 @@ public final class Util {
}
}
- public static int getAttribute(Context context, int attr) {
- int res;
- int[] attrs = new int[] {attr};
- TypedArray typedArray = context.obtainStyledAttributes(attrs);
- res = typedArray.getResourceId(0, 0);
- typedArray.recycle();
- return res;
- }
-
public static void registerMediaButtonEventReceiver(Context context) {
// Only do it if enabled in the settings.