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 {