From 18d1ae5ec62e39ce1aa439a24434a132405451a0 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 15 Jul 2016 20:00:04 -0500 Subject: [PATCH] Add WidgetBackground palette to color picker --- .../org/tasks/dialogs/ThemePickerDialog.java | 9 ++++-- .../java/org/tasks/themes/ThemeCache.java | 10 ++++++ .../org/tasks/themes/WidgetBackground.java | 32 +++++++++++++++++++ .../java/org/tasks/widget/TasksWidget.java | 6 ++-- .../tasks/widget/WidgetConfigActivity.java | 2 +- .../org/tasks/widget/WidgetConfigDialog.java | 4 +-- src/main/res/values/arrays.xml | 6 ++++ 7 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/tasks/themes/WidgetBackground.java diff --git a/src/main/java/org/tasks/dialogs/ThemePickerDialog.java b/src/main/java/org/tasks/dialogs/ThemePickerDialog.java index fe0dc9390..f27514691 100644 --- a/src/main/java/org/tasks/dialogs/ThemePickerDialog.java +++ b/src/main/java/org/tasks/dialogs/ThemePickerDialog.java @@ -33,7 +33,8 @@ public class ThemePickerDialog extends InjectingDialogFragment { public enum ColorPalette { THEMES, COLORS, - ACCENTS + ACCENTS, + WIDGET_BACKGROUND } public static ThemePickerDialog newThemePickerDialog(ColorPalette palette) { @@ -64,7 +65,7 @@ public class ThemePickerDialog extends InjectingDialogFragment { palette = (ColorPalette) savedInstanceState.getSerializable(EXTRA_COLOR_PALETTE); } - if (palette == ColorPalette.THEMES) { + if (palette == ColorPalette.THEMES || palette == ColorPalette.WIDGET_BACKGROUND) { theme = theme.withBaseTheme(themeCache.getThemeBase(2)); } @@ -115,6 +116,8 @@ public class ThemePickerDialog extends InjectingDialogFragment { return R.array.colors; case ACCENTS: return R.array.accents; + case WIDGET_BACKGROUND: + return R.array.widget_background; default: return R.array.themes; } @@ -126,6 +129,8 @@ public class ThemePickerDialog extends InjectingDialogFragment { return themeCache.getThemeColor(index).getPrimaryColor(); case ACCENTS: return themeCache.getThemeAccent(index).getAccentColor(); + case WIDGET_BACKGROUND: + return themeCache.getWidgetBackground(index).getBackgroundColor(); default: return themeCache.getThemeBase(index).getContentBackground(); } diff --git a/src/main/java/org/tasks/themes/ThemeCache.java b/src/main/java/org/tasks/themes/ThemeCache.java index 05b0e78e1..4a62e7b55 100644 --- a/src/main/java/org/tasks/themes/ThemeCache.java +++ b/src/main/java/org/tasks/themes/ThemeCache.java @@ -15,6 +15,7 @@ public class ThemeCache { private final List themes = new ArrayList<>(); private final List colors = new ArrayList<>(); private final List accents = new ArrayList<>(); + private final List widgetBackgrounds = new ArrayList<>(); private final ThemeColor untaggedColor; public ThemeCache(Context context) { @@ -51,9 +52,18 @@ public class ThemeCache { i, resolveAttribute(theme, R.attr.colorAccent))); } + String[] widgetBackgroundNames = resources.getStringArray(R.array.widget_background); + for (int i = 0 ; i < WidgetBackground.BACKGROUNDS.length ; i++) { + widgetBackgrounds.add(new WidgetBackground( + widgetBackgroundNames[i], i, resources.getColor(WidgetBackground.BACKGROUNDS[i]))); + } untaggedColor = new ThemeColor(null, 19, resources.getColor(R.color.tag_color_none_background), 0, resources.getColor(R.color.black_87), false); } + public WidgetBackground getWidgetBackground(int index) { + return widgetBackgrounds.get(index); + } + public ThemeBase getThemeBase(int index) { return themes.get(index); } diff --git a/src/main/java/org/tasks/themes/WidgetBackground.java b/src/main/java/org/tasks/themes/WidgetBackground.java new file mode 100644 index 000000000..541ad6496 --- /dev/null +++ b/src/main/java/org/tasks/themes/WidgetBackground.java @@ -0,0 +1,32 @@ +package org.tasks.themes; + +import org.tasks.R; + +public class WidgetBackground { + public static final int[] BACKGROUNDS = new int[] { + R.color.md_light_background, + android.R.color.black, + R.color.md_dark_background + }; + private final String name; + private final int index; + private final int backgroundColor; + + public WidgetBackground(String name, int index, int backgroundColor) { + this.name = name; + this.index = index; + this.backgroundColor = backgroundColor; + } + + public int getBackgroundColor() { + return backgroundColor; + } + + public String getName() { + return name; + } + + public int getIndex() { + return index; + } +} diff --git a/src/main/java/org/tasks/widget/TasksWidget.java b/src/main/java/org/tasks/widget/TasksWidget.java index 0bff36dd6..19398cb21 100644 --- a/src/main/java/org/tasks/widget/TasksWidget.java +++ b/src/main/java/org/tasks/widget/TasksWidget.java @@ -21,9 +21,9 @@ import org.tasks.intents.TaskIntents; import org.tasks.locale.Locale; import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.Preferences; -import org.tasks.themes.ThemeBase; import org.tasks.themes.ThemeCache; import org.tasks.themes.ThemeColor; +import org.tasks.themes.WidgetBackground; import javax.inject.Inject; @@ -100,7 +100,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { rvIntent.putExtra(ScrollableWidgetUpdateService.FILTER_ID, filterId); rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME))); - ThemeBase theme = themeCache.getThemeBase(preferences.getInt(WidgetConfigActivity.PREF_THEME + id, 0)); + WidgetBackground theme = themeCache.getWidgetBackground(preferences.getInt(WidgetConfigActivity.PREF_THEME + id, 0)); ThemeColor color = themeCache.getThemeColor(preferences.getInt(WidgetConfigActivity.PREF_COLOR + id, 0)); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.scrollable_widget); if (atLeastJellybeanMR1()) { @@ -114,7 +114,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { } int opacity = preferences.getInt(WidgetConfigActivity.PREF_WIDGET_OPACITY + id, WidgetConfigActivity.DEFAULT_OPACITY); remoteViews.setImageViewBitmap(R.id.widget_background, - getSolidBackground(theme.getContentBackground())); + getSolidBackground(theme.getBackgroundColor())); remoteViews.setImageViewBitmap(R.id.widget_header_background, getSolidBackground(color.getPrimaryColor())); remoteViews.setInt(R.id.widget_background, "setAlpha", opacity); diff --git a/src/main/java/org/tasks/widget/WidgetConfigActivity.java b/src/main/java/org/tasks/widget/WidgetConfigActivity.java index e0a39e3c2..b09ec6a00 100644 --- a/src/main/java/org/tasks/widget/WidgetConfigActivity.java +++ b/src/main/java/org/tasks/widget/WidgetConfigActivity.java @@ -83,7 +83,7 @@ public class WidgetConfigActivity extends InjectingAppCompatActivity implements @Override public void themePicked(ThemePickerDialog.ColorPalette palette, int index) { - if (palette == ThemePickerDialog.ColorPalette.THEMES) { + if (palette == ThemePickerDialog.ColorPalette.WIDGET_BACKGROUND) { widgetConfigDialog.setThemeIndex(index); } else { widgetConfigDialog.setColorIndex(index); diff --git a/src/main/java/org/tasks/widget/WidgetConfigDialog.java b/src/main/java/org/tasks/widget/WidgetConfigDialog.java index 4b50172c5..7b6ea960f 100644 --- a/src/main/java/org/tasks/widget/WidgetConfigDialog.java +++ b/src/main/java/org/tasks/widget/WidgetConfigDialog.java @@ -174,7 +174,7 @@ public class WidgetConfigDialog extends InjectingDialogFragment implements SeekB } private void updateTheme() { - selectedTheme.setText(themeCache.getThemeBase(themeIndex).getName()); + selectedTheme.setText(themeCache.getWidgetBackground(themeIndex).getName()); } private void updateColor() { @@ -192,7 +192,7 @@ public class WidgetConfigDialog extends InjectingDialogFragment implements SeekB public void showThemeSelection() { FragmentManager fragmentManager = getFragmentManager(); if (fragmentManager.findFragmentByTag(FRAG_TAG_THEME_SELECTION) == null) { - newThemePickerDialog(ThemePickerDialog.ColorPalette.THEMES).show(fragmentManager, FRAG_TAG_THEME_SELECTION); + newThemePickerDialog(ThemePickerDialog.ColorPalette.WIDGET_BACKGROUND).show(fragmentManager, FRAG_TAG_THEME_SELECTION); } } diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml index 826e64238..f25fbdbd2 100644 --- a/src/main/res/values/arrays.xml +++ b/src/main/res/values/arrays.xml @@ -130,6 +130,12 @@ @string/theme_deep_orange + + @string/theme_light + @string/theme_black + @string/theme_dark + + ar bg-bg