From f413b3705838af204a7ba84c7b120de522491c88 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 11 Mar 2020 12:27:37 -0500 Subject: [PATCH] Accent colors follow desaturation preference --- .../org/tasks/dialogs/ColorPalettePicker.kt | 4 +- .../org/tasks/injection/ActivityModule.java | 4 +- .../java/org/tasks/themes/ColorProvider.kt | 10 ++- .../java/org/tasks/themes/ThemeAccent.java | 29 +++++++- app/src/main/res/values-night/accents.xml | 72 ------------------- app/src/main/res/values/accents.xml | 68 ++++++++++++++++++ 6 files changed, 106 insertions(+), 81 deletions(-) delete mode 100644 app/src/main/res/values-night/accents.xml diff --git a/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt b/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt index 18f577f9f..fa15055b7 100644 --- a/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt +++ b/app/src/main/java/org/tasks/dialogs/ColorPalettePicker.kt @@ -83,9 +83,7 @@ class ColorPalettePicker : InjectingDialogFragment() { palette = arguments!!.getSerializable(EXTRA_PALETTE) as Palette colors = when (palette) { Palette.COLORS -> colorProvider.getThemeColors() - Palette.ACCENTS -> ThemeAccent.ACCENTS.mapIndexed { index, _ -> - ThemeAccent(context, index) - } + Palette.ACCENTS -> colorProvider.getAccentColors() Palette.LAUNCHERS -> ThemeColor.LAUNCHER_COLORS.map { color -> ThemeColor(context, ContextCompat.getColor(context!!, color)) } diff --git a/app/src/main/java/org/tasks/injection/ActivityModule.java b/app/src/main/java/org/tasks/injection/ActivityModule.java index e887f361a..1593fd319 100644 --- a/app/src/main/java/org/tasks/injection/ActivityModule.java +++ b/app/src/main/java/org/tasks/injection/ActivityModule.java @@ -48,8 +48,8 @@ public class ActivityModule { @Provides @ActivityScope - public ThemeAccent getThemeAccent(Preferences preferences) { - return new ThemeAccent(activity, preferences.getInt(R.string.p_theme_accent, 1)); + public ThemeAccent getThemeAccent(ColorProvider colorProvider, Preferences preferences) { + return colorProvider.getThemeAccent(preferences.getInt(R.string.p_theme_accent, 1)); } @Provides diff --git a/app/src/main/java/org/tasks/themes/ColorProvider.kt b/app/src/main/java/org/tasks/themes/ColorProvider.kt index 1874f241b..6999c7594 100644 --- a/app/src/main/java/org/tasks/themes/ColorProvider.kt +++ b/app/src/main/java/org/tasks/themes/ColorProvider.kt @@ -90,9 +90,17 @@ class ColorProvider @Inject constructor(@ForActivity private val context: Contex else -> GREY } + fun getThemeAccent(index: Int) = ThemeAccent(context, if (isDark && desaturate) { + ThemeAccent.ACCENTS_DESATURATED[index] + } else { + ThemeAccent.ACCENTS[index] + }) + fun getThemeColors(adjust: Boolean = true) = ThemeColor.COLORS.map { c -> getThemeColor(ContextCompat.getColor(context, c), adjust) } - fun getWidgetColors() = getThemeColors(true) + fun getWidgetColors() = getThemeColors(false) + + fun getAccentColors() = ThemeAccent.ACCENTS.indices.map(this@ColorProvider::getThemeAccent) } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/themes/ThemeAccent.java b/app/src/main/java/org/tasks/themes/ThemeAccent.java index a54ffe0a6..a2de032b7 100644 --- a/app/src/main/java/org/tasks/themes/ThemeAccent.java +++ b/app/src/main/java/org/tasks/themes/ThemeAccent.java @@ -31,6 +31,27 @@ public class ThemeAccent implements Pickable { R.style.OrangeAccent, R.style.DeepOrangeAccent }; + public static final int[] ACCENTS_DESATURATED = + new int[] { + R.style.BlueGreyAccentDesaturated, + R.style.RedAccentDesaturated, + R.style.PinkAccentDesaturated, + R.style.PurpleAccentDesaturated, + R.style.DeepPurpleAccentDesaturated, + R.style.IndigoAccentDesaturated, + R.style.BlueAccentDesaturated, + R.style.LightBlueAccentDesaturated, + R.style.CyanAccentDesaturated, + R.style.TealAccentDesaturated, + R.style.GreenAccentDesaturated, + R.style.LightGreenAccentDesaturated, + R.style.LimeAccentDesaturated, + R.style.YellowAccentDesaturated, + R.style.AmberAccentDesaturated, + R.style.OrangeAccentDesaturated, + R.style.DeepOrangeAccentDesaturated + }; + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override @@ -46,9 +67,9 @@ public class ThemeAccent implements Pickable { private final int style; @Deprecated private final int accentColor; - public ThemeAccent(Context context, int index) { - this.style = ACCENTS[index]; - Resources.Theme theme = new ContextThemeWrapper(context, ThemeAccent.ACCENTS[index]).getTheme(); + public ThemeAccent(Context context, int style) { + this.style = style; + Resources.Theme theme = new ContextThemeWrapper(context, style).getTheme(); this.accentColor = resolveAttribute(theme, R.attr.colorSecondary); } @@ -77,6 +98,8 @@ public class ThemeAccent implements Pickable { switch (style) { case R.style.BlueGreyAccent: case R.style.RedAccent: + case R.style.BlueGreyAccentDesaturated: + case R.style.RedAccentDesaturated: return true; default: return false; diff --git a/app/src/main/res/values-night/accents.xml b/app/src/main/res/values-night/accents.xml deleted file mode 100644 index c30d18fec..000000000 --- a/app/src/main/res/values-night/accents.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/accents.xml b/app/src/main/res/values/accents.xml index 9d76e4ef4..fde2decda 100644 --- a/app/src/main/res/values/accents.xml +++ b/app/src/main/res/values/accents.xml @@ -69,4 +69,72 @@ @color/yellow_a400 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file