From f4561121b659b6ba03f174ef1422110613086a6a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 2 Mar 2020 13:27:08 -0600 Subject: [PATCH] Use saturated checkbox colors in dark mode --- .../main/java/org/tasks/ui/CheckBoxes.java | 47 +++++++++++++++---- .../tasks/widget/ScrollableViewsFactory.java | 2 +- app/src/main/res/values-night/colors.xml | 5 ++ app/src/main/res/values/colors.xml | 8 +++- 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/tasks/ui/CheckBoxes.java b/app/src/main/java/org/tasks/ui/CheckBoxes.java index 3cca6849c..acc629f66 100644 --- a/app/src/main/java/org/tasks/ui/CheckBoxes.java +++ b/app/src/main/java/org/tasks/ui/CheckBoxes.java @@ -6,24 +6,19 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.Drawable; +import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import com.todoroo.astrid.data.Task; import org.tasks.R; +import org.tasks.themes.DrawableUtil; public class CheckBoxes { private CheckBoxes() {} - private static Drawable getDrawable(Context context, @DrawableRes int resId, int priority) { - Drawable original = ContextCompat.getDrawable(context, resId); - Drawable wrapped = DrawableCompat.wrap(original.mutate()); - DrawableCompat.setTint(wrapped, getColor(context, getPriorityResId(priority))); - return wrapped; - } - - private static int getPriorityResId(int priority) { + private @ColorRes static int getPriorityResId(int priority) { if (priority <= 0) { return R.color.priority_1; } else if (priority == 1) { @@ -35,6 +30,18 @@ public class CheckBoxes { } } + private @ColorRes static int getWidgetPriorityResId(int priority) { + if (priority <= 0) { + return R.color.widget_priority_1; + } else if (priority == 1) { + return R.color.widget_priority_2; + } else if (priority == 2) { + return R.color.widget_priority_3; + } else { + return R.color.priority_4; + } + } + private static Bitmap convertToBitmap(Drawable d) { Bitmap bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); @@ -44,8 +51,21 @@ public class CheckBoxes { return bitmap; } - public static Bitmap getCheckBoxBitmap(Context context, Task task) { - return convertToBitmap(getCheckBox(context, task)); + private static @DrawableRes int getDrawable(Task task) { + if (task.isCompleted()) { + return R.drawable.ic_outline_check_box_24px; + } else if (task.isRecurring()) { + return R.drawable.ic_outline_repeat_24px; + } else { + return R.drawable.ic_outline_check_box_outline_blank_24px; + } + } + + public static Bitmap getWidgetCheckBox(Context context, Task task) { + Drawable wrapped = DrawableUtil.getWrapped(context, getDrawable(task)); + int color = getWidgetPriorityResId(task.getPriority()); + DrawableUtil.setTint(wrapped, ContextCompat.getColor(context, color)); + return convertToBitmap(wrapped); } public static Drawable getCheckBox(Context context, Task task) { @@ -63,6 +83,13 @@ public class CheckBoxes { } } + private static Drawable getDrawable(Context context, @DrawableRes int resId, int priority) { + Drawable original = ContextCompat.getDrawable(context, resId); + Drawable wrapped = DrawableCompat.wrap(original.mutate()); + DrawableCompat.setTint(wrapped, getColor(context, getPriorityResId(priority))); + return wrapped; + } + public static int getPriorityColor(Context context, int priority) { return getColor(context, getPriorityResId(priority)); } diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index aac336eb4..68c406e85 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -124,7 +124,7 @@ class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFactory { } private Bitmap getCheckbox(Task task) { - return CheckBoxes.getCheckBoxBitmap(context, task); + return CheckBoxes.getWidgetCheckBox(context, task); } private RemoteViews buildUpdate(int position) { diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 9435cf14d..d4891a975 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -10,4 +10,9 @@ @color/white_60 @color/white_38 @color/error_color_material_dark + + @color/red_200 + @color/amber_200 + @color/blue_200 + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 19f0f3469..4640672ab 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,7 +5,7 @@ ** See the file "LICENSE" for the full license governing this code. --> - + #EF9A9A #f44336 #ff1744 #FF8A80 @@ -26,6 +26,7 @@ #3d5afe #8C9EFF + #90CAF9 #2196f3 #2979ff #82B1FF @@ -58,6 +59,7 @@ #ffea00 #FFFF8D + #FFE082 #ffc107 #ffc400 #FFE57F @@ -110,6 +112,10 @@ @color/blue_500 @color/grey_500 + @color/red_500 + @color/amber_500 + @color/blue_500 + @color/white_87 #f4b400 @color/grey_800