From f8c7abfff45f48204f3c3aaec08fff3b73320709 Mon Sep 17 00:00:00 2001 From: Quentin Hibon Date: Thu, 5 Aug 2021 23:30:45 +0200 Subject: [PATCH] Use 'entered' instead of 'completed' when ? or skips are enabled --- .../activities/habits/list/ListHabitsActivity.kt | 7 ++++++- .../uhabits/activities/habits/list/ListHabitsMenu.kt | 5 +++++ .../habits/list/views/CheckmarkButtonView.kt | 4 ++-- .../activities/habits/list/views/NumberButtonView.kt | 2 +- .../uhabits/preferences/SharedPreferencesStorage.kt | 3 +++ .../uhabits/widgets/views/CheckmarkWidgetView.kt | 2 +- uhabits-android/src/main/res/values/strings.xml | 1 + .../org/isoron/uhabits/core/preferences/Preferences.kt | 10 +++++++--- 8 files changed, 26 insertions(+), 8 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt index b8dc0229d..ac078c317 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsActivity.kt @@ -38,7 +38,7 @@ import org.isoron.uhabits.inject.ActivityContextModule import org.isoron.uhabits.inject.DaggerHabitsActivityComponent import org.isoron.uhabits.utils.restartWithFade -class ListHabitsActivity : AppCompatActivity() { +class ListHabitsActivity : AppCompatActivity(), Preferences.Listener { var pureBlack: Boolean = false lateinit var taskRunner: TaskRunner @@ -51,6 +51,10 @@ class ListHabitsActivity : AppCompatActivity() { private lateinit var menu: ListHabitsMenu + override fun onQuestionMarksChanged() { + invalidateOptionsMenu() + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -63,6 +67,7 @@ class ListHabitsActivity : AppCompatActivity() { component.themeSwitcher.apply() prefs = appComponent.preferences + prefs.addListener(this) pureBlack = prefs.isPureBlackEnabled midnightTimer = appComponent.midnightTimer rootView = component.listHabitsRootView diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt index 6d223c288..c92d0dd3f 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.kt @@ -52,6 +52,11 @@ class ListHabitsMenu @Inject constructor( nightModeItem.isChecked = themeSwitcher.isNightMode hideArchivedItem.isChecked = !preferences.showArchived hideCompletedItem.isChecked = !preferences.showCompleted + if (preferences.areQuestionMarksEnabled || preferences.isSkipEnabled) { + hideCompletedItem.title = activity.resources.getString(R.string.hide_entered) + } else { + hideCompletedItem.title = activity.resources.getString(R.string.hide_completed) + } updateArrows(menu) } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt index 8fa15a8f0..e11d23868 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt @@ -131,7 +131,7 @@ class CheckmarkButtonView( paint.color = when (value) { YES_MANUAL, YES_AUTO, SKIP -> color NO -> { - if (preferences.areQuestionMarksEnabled()) mediumContrastColor + if (preferences.areQuestionMarksEnabled) mediumContrastColor else lowContrastColor } else -> lowContrastColor @@ -140,7 +140,7 @@ class CheckmarkButtonView( SKIP -> R.string.fa_skipped NO -> R.string.fa_times UNKNOWN -> { - if (preferences.areQuestionMarksEnabled()) R.string.fa_question + if (preferences.areQuestionMarksEnabled) R.string.fa_question else R.string.fa_times } else -> R.string.fa_check diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt index f4f7cc4ac..3e48ed1a6 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/NumberButtonView.kt @@ -169,7 +169,7 @@ class NumberButtonView( typeface = BOLD_TYPEFACE textSize = dim(R.dimen.smallTextSize) } - preferences.areQuestionMarksEnabled() -> { + preferences.areQuestionMarksEnabled -> { label = resources.getString(R.string.fa_question) typeface = getFontAwesome() textSize = dim(R.dimen.smallerTextSize) 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 6c06021a8..ec78e5d6b 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 @@ -92,6 +92,9 @@ class SharedPreferencesStorage preferences.setNotificationsSticky(getBoolean(key, false)) "pref_led_notifications" -> preferences.setNotificationsLed(getBoolean(key, false)) + "pref_unknown_enabled" -> { + preferences.areQuestionMarksEnabled = 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 1799b39c3..83b52f860 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 @@ -102,7 +102,7 @@ class CheckmarkWidgetView : HabitWidgetView { SKIP -> resources.getString(R.string.fa_skipped) UNKNOWN -> { run { - if (preferences!!.areQuestionMarksEnabled()) { + if (preferences!!.areQuestionMarksEnabled) { return resources.getString(R.string.fa_question) } else { resources.getString(R.string.fa_times) diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml index 4418fdd65..9d5778e6e 100644 --- a/uhabits-android/src/main/res/values/strings.xml +++ b/uhabits-android/src/main/res/values/strings.xml @@ -161,6 +161,7 @@ None Filter Hide completed + Hide entered Hide archived Make notifications sticky Prevents notifications from being swiped away. diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/preferences/Preferences.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/preferences/Preferences.kt index 8fdd26af9..0fc17f873 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/preferences/Preferences.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/preferences/Preferences.kt @@ -205,9 +205,12 @@ open class Preferences(private val storage: Storage) { storage.putBoolean("pref_skip_enabled", value) } - fun areQuestionMarksEnabled(): Boolean { - return storage.getBoolean("pref_unknown_enabled", false) - } + var areQuestionMarksEnabled: Boolean + get() = storage.getBoolean("pref_unknown_enabled", false) + set(value) { + storage.putBoolean("pref_unknown_enabled", value) + for (l in listeners) l.onQuestionMarksChanged() + } /** * @return An integer representing the first day of the week. Sunday @@ -240,6 +243,7 @@ open class Preferences(private val storage: Storage) { interface Listener { fun onCheckmarkSequenceChanged() {} fun onNotificationsChanged() {} + fun onQuestionMarksChanged() {} } interface Storage {