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"/>