From a9978b9716a554c82512e0964f532dd6752a21b0 Mon Sep 17 00:00:00 2001 From: JollyGood1 Date: Sun, 19 Jan 2025 14:50:22 +0200 Subject: [PATCH] Option to inverse checkmark widget On/Off colours --- .../preferences/SharedPreferencesStorage.kt | 2 + .../widgets/views/CheckmarkWidgetView.kt | 51 ++++++++++++++----- .../src/main/res/values/strings.xml | 2 + .../src/main/res/xml/preferences.xml | 7 +++ .../uhabits/core/preferences/Preferences.kt | 8 +++ 5 files changed, 57 insertions(+), 13 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt b/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt index 0e019be0c..6237329d9 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/preferences/SharedPreferencesStorage.kt @@ -93,6 +93,8 @@ class SharedPreferencesStorage "pref_unknown_enabled" -> { preferences.areQuestionMarksEnabled = getBoolean(key, false) } + "pref_inverse_checkmark_colors" -> + preferences.isCheckmarkWidgetColorInverted = getBoolean(key, false) } sharedPreferences.registerOnSharedPreferenceChangeListener(this) } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt index 72c95da64..6475e8423 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt @@ -67,20 +67,45 @@ class CheckmarkWidgetView : HabitWidgetView { val bgColor: Int val fgColor: Int setShadowAlpha(0x4f) - when (entryState) { - YES_MANUAL, SKIP, YES_AUTO -> { - bgColor = activeColor - fgColor = res.getColor(R.attr.contrast0) - backgroundPaint!!.color = bgColor - frame!!.setBackgroundDrawable(background) - } - NO, UNKNOWN -> { - bgColor = res.getColor(R.attr.cardBgColor) - fgColor = res.getColor(R.attr.contrast60) + if (preferences!!.isCheckmarkWidgetColorInverted) { + when (entryState) { + YES_MANUAL, SKIP, YES_AUTO -> { + bgColor = res.getColor(R.attr.cardBgColor) + fgColor = res.getColor(R.attr.contrast60) + } + + NO, UNKNOWN -> { + bgColor = activeColor + fgColor = res.getColor(R.attr.contrast0) + backgroundPaint!!.color = bgColor + frame!!.setBackgroundDrawable(background) + } + + else -> { + bgColor = activeColor + fgColor = res.getColor(R.attr.contrast0) + backgroundPaint!!.color = bgColor + frame!!.setBackgroundDrawable(background) + } } - else -> { - bgColor = res.getColor(R.attr.cardBgColor) - fgColor = res.getColor(R.attr.contrast60) + } else { + when (entryState) { + YES_MANUAL, SKIP, YES_AUTO -> { + bgColor = activeColor + fgColor = res.getColor(R.attr.contrast0) + backgroundPaint!!.color = bgColor + frame!!.setBackgroundDrawable(background) + } + + NO, UNKNOWN -> { + bgColor = res.getColor(R.attr.cardBgColor) + fgColor = res.getColor(R.attr.contrast60) + } + + else -> { + bgColor = res.getColor(R.attr.cardBgColor) + fgColor = res.getColor(R.attr.contrast60) + } } } ring.setPercentage(percentage) diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml index 9fec1cbca..f856432cd 100644 --- a/uhabits-android/src/main/res/values/strings.xml +++ b/uhabits-android/src/main/res/values/strings.xml @@ -233,4 +233,6 @@ No app was found to support this action Extend day a few hours past midnight Wait until 3:00 AM to show a new day. Useful if you typically go to sleep after midnight. Requires app restart. + Inverse checkmark widget colors + Make the checkmark widget looked turn off once the task is done. diff --git a/uhabits-android/src/main/res/xml/preferences.xml b/uhabits-android/src/main/res/xml/preferences.xml index ad381b502..dee86768c 100644 --- a/uhabits-android/src/main/res/xml/preferences.xml +++ b/uhabits-android/src/main/res/xml/preferences.xml @@ -81,6 +81,13 @@ android:title="@string/first_day_of_the_week" app:iconSpaceReserved="false" /> + +