From 78deb5c0d625ccc2ad145e24c5a2aafbbd3fe180 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 28 Feb 2020 07:34:20 -0600 Subject: [PATCH] Add stroke around color indicators --- .../activities/BaseListSettingsActivity.java | 7 +++-- .../injection/InjectingPreferenceFragment.kt | 8 ++++++ .../preferences/fragments/LookAndFeel.kt | 7 ++--- .../main/java/org/tasks/themes/CustomIcons.kt | 3 ++- .../tasks/widget/ShortcutConfigActivity.java | 14 ++-------- app/src/main/res/drawable/color_picker.xml | 27 +++++++++++++++++++ .../main/res/layout/list_settings_color.xml | 2 +- .../res/xml/preferences_look_and_feel.xml | 3 +++ 8 files changed, 48 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/drawable/color_picker.xml diff --git a/app/src/main/java/org/tasks/activities/BaseListSettingsActivity.java b/app/src/main/java/org/tasks/activities/BaseListSettingsActivity.java index 175af1314..b0d3c5811 100644 --- a/app/src/main/java/org/tasks/activities/BaseListSettingsActivity.java +++ b/app/src/main/java/org/tasks/activities/BaseListSettingsActivity.java @@ -6,6 +6,7 @@ import static org.tasks.themes.ThemeColor.newThemeColor; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.view.MenuItem; import android.view.View; @@ -167,10 +168,8 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA color.setVisibility(View.GONE); } else { themeColor = newThemeColor(this, selectedColor); - Drawable colorIcon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_lens_24px); - Drawable wrappedColorIcon = DrawableCompat.wrap(colorIcon.mutate()); - DrawableCompat.setTint(wrappedColorIcon, themeColor.getPrimaryColor()); - color.setImageDrawable(wrappedColorIcon); + Drawable drawable = color.getDrawable(); + DrawableCompat.setTint(((LayerDrawable) drawable).getDrawable(0), themeColor.getPrimaryColor()); color.setVisibility(View.VISIBLE); } themeColor.apply(toolbar); diff --git a/app/src/main/java/org/tasks/injection/InjectingPreferenceFragment.kt b/app/src/main/java/org/tasks/injection/InjectingPreferenceFragment.kt index 2bfb28ca3..e29a82f56 100644 --- a/app/src/main/java/org/tasks/injection/InjectingPreferenceFragment.kt +++ b/app/src/main/java/org/tasks/injection/InjectingPreferenceFragment.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.content.DialogInterface import android.content.Intent import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable import android.os.Bundle import androidx.annotation.StringRes import androidx.core.content.ContextCompat @@ -72,6 +73,13 @@ abstract class InjectingPreferenceFragment : PreferenceFragmentCompat() { .show() } + protected fun tintIcon(resId: Int, tint: Int) { + val pref = findPreference(resId) + val icon = DrawableCompat.wrap(pref.icon.mutate()) + DrawableCompat.setTint(if (icon is LayerDrawable) icon.getDrawable(0) else icon, tint) + pref.icon = icon + } + protected fun requires(@StringRes prefGroup: Int, check: Boolean, vararg resIds: Int) { if (!check) { remove(findPreference(prefGroup) as PreferenceGroup, resIds) diff --git a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt index 2684d60b6..fd91697f5 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/LookAndFeel.kt @@ -365,11 +365,8 @@ class LookAndFeel : InjectingPreferenceFragment(), Preference.OnPreferenceChange palette: ColorPickerActivity.ColorPalette, requestCode: Int ) { - val themePref: Preference = findPreference(prefId) - val original = ContextCompat.getDrawable(context!!, R.drawable.ic_baseline_lens_24px) - themePref.icon = DrawableCompat.wrap(original!!.mutate()) - DrawableCompat.setTint(themePref.icon, color) - themePref.setOnPreferenceClickListener { + tintIcon(prefId, color) + findPreference(prefId).setOnPreferenceClickListener { val intent = Intent(context, ColorPickerActivity::class.java) intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, palette) startActivityForResult(intent, requestCode) diff --git a/app/src/main/java/org/tasks/themes/CustomIcons.kt b/app/src/main/java/org/tasks/themes/CustomIcons.kt index f5e545bd7..a2b8dbf68 100644 --- a/app/src/main/java/org/tasks/themes/CustomIcons.kt +++ b/app/src/main/java/org/tasks/themes/CustomIcons.kt @@ -161,7 +161,8 @@ object CustomIcons { 1124 to R.drawable.ic_outline_edit_24px, 1125 to R.drawable.ic_outline_info_24px, 1126 to R.drawable.ic_outline_palette_24px, - 1127 to R.drawable.ic_outline_sd_storage_24px + 1127 to R.drawable.ic_outline_sd_storage_24px, + 1128 to R.drawable.ic_baseline_lens_24px ) @kotlin.jvm.JvmStatic diff --git a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java index e0f4764c3..9dd181579 100644 --- a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java +++ b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java @@ -70,7 +70,7 @@ public class ShortcutConfigActivity extends InjectingAppCompatActivity { if (icicle == null) { selectedFilter = defaultFilterProvider.getDefaultFilter(); - selectedTheme = -1; + selectedTheme = 7; } else { selectedFilter = icicle.getParcelable(EXTRA_FILTER); selectedTheme = icicle.getInt(EXTRA_THEME); @@ -158,17 +158,7 @@ public class ShortcutConfigActivity extends InjectingAppCompatActivity { } private int getThemeIndex() { - if (selectedTheme >= 0) { - return selectedTheme; - } - int index = - selectedFilter == null || selectedFilter.tint == 0 - ? themeColor.getIndex() - : selectedFilter.tint; - if (index >= ThemeColor.ICONS.length - 1) { - return 7; // use blue theme until white icon is available - } - return index; + return selectedTheme >= 0 && selectedTheme < ThemeColor.ICONS.length - 1 ? selectedTheme : 7; } private String getShortcutName() { diff --git a/app/src/main/res/drawable/color_picker.xml b/app/src/main/res/drawable/color_picker.xml new file mode 100644 index 000000000..4c9e85af1 --- /dev/null +++ b/app/src/main/res/drawable/color_picker.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_settings_color.xml b/app/src/main/res/layout/list_settings_color.xml index be9afa67c..ee67f97ea 100644 --- a/app/src/main/res/layout/list_settings_color.xml +++ b/app/src/main/res/layout/list_settings_color.xml @@ -13,7 +13,7 @@ android:layout_alignParentRight="true" android:alpha="@dimen/alpha_secondary" android:contentDescription="@string/color" - android:src="@drawable/ic_baseline_lens_24px"/> + android:src="@drawable/color_picker"/>