diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/settings/SettingsView.kt b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/settings/SettingsView.kt
index e798545..69e75e7 100644
--- a/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/settings/SettingsView.kt
+++ b/app/src/main/java/com/javinator9889/handwashingreminder/activities/views/fragments/settings/SettingsView.kt
@@ -27,6 +27,7 @@ import com.javinator9889.handwashingreminder.R
import com.javinator9889.handwashingreminder.activities.base.LayoutVisibilityChange
import com.javinator9889.handwashingreminder.data.SettingsLoader
import com.javinator9889.handwashingreminder.gms.vendor.BillingService
+import timber.log.Timber
import java.lang.ref.WeakReference
class SettingsView : PreferenceFragmentCompat(),
@@ -61,7 +62,10 @@ class SettingsView : PreferenceFragmentCompat(),
override fun onPreferenceChange(
preference: Preference?,
newValue: Any?
- ): Boolean = loader.onPreferenceChange(preference, newValue)
+ ): Boolean {
+ Timber.d("Preference $preference changed - ${preference?.key}")
+ return loader.onPreferenceChange(preference, newValue)
+ }
override fun onVisibilityChanged(visibility: Int) {
if (visibility == View.VISIBLE)
diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt b/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt
index d532594..8786c8d 100644
--- a/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt
+++ b/app/src/main/java/com/javinator9889/handwashingreminder/data/SettingsLoader.kt
@@ -27,6 +27,7 @@ import androidx.annotation.StringRes
import androidx.emoji.text.EmojiCompat
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
+import androidx.preference.EditTextPreference
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.SwitchPreference
@@ -293,6 +294,24 @@ class SettingsLoader(
),
dispatcher = Dispatchers.Main
).also { deferreds.add(it) }
+ setupPreferenceAsync(
+ Preferences.ACTIVITY_MINIMUM_TIME,
+ Ionicons.Icon.ion_ios_stopwatch_outline,
+ onInitialized = { it, _ ->
+ runCatching {
+ it as EditTextPreference
+ val timeText = Integer.parseInt(it.text)
+ val minutes = resources.getQuantityString(
+ R.plurals.minutes,
+ timeText,
+ timeText
+ )
+ it.summary =
+ getString(R.string.minimum_time_summ, minutes)
+ }
+ },
+ onChangeListener = this@with
+ ).also { deferreds.add(it) }
deferreds.awaitAll()
arePreferencesInitialized.set(true)
}
@@ -454,9 +473,10 @@ class SettingsLoader(
preference: Preference?,
newValue: Any?
): Boolean =
- when (preference) {
- view.firebaseAnalyticsPreference.get() -> {
+ when (preference?.key) {
+ Preferences.ANALYTICS_ENABLED -> {
val enabled = newValue as Boolean
+ Timber.d("Analytics collection is $enabled")
with(FirebaseAnalytics.getInstance(view.requireContext())) {
setAnalyticsCollectionEnabled(enabled)
if (!enabled)
@@ -464,15 +484,17 @@ class SettingsLoader(
}
true
}
- view.firebasePerformancePreference.get() -> {
+ Preferences.PERFORMANCE_ENABLED -> {
val enabled = newValue as Boolean
+ Timber.d("Performance is $enabled")
with(FirebasePerformance.getInstance()) {
isPerformanceCollectionEnabled = enabled
}
true
}
- view.adsPreference.get() -> {
+ Preferences.ADS_ENABLED -> {
val enabled = newValue as Boolean
+ Timber.d("Ads are enabled $enabled")
var ret = false
val adEnabler = AdsEnabler(HandwashingApplication.instance)
if (enabled) {
@@ -512,7 +534,7 @@ class SettingsLoader(
}
ret
}
- view.donationsPreference.get() -> {
+ Preferences.DONATIONS -> {
Timber.d("Purchase clicked - $newValue")
val purchaseId = newValue as String
if (isConnected())
@@ -531,6 +553,19 @@ class SettingsLoader(
}
false
}
+ Preferences.ACTIVITY_MINIMUM_TIME -> runCatching {
+ preference as EditTextPreference
+ Timber.d("Changing activity interval - $newValue")
+ val timeText = Integer.parseInt(newValue as String)
+ val minutes = view.resources.getQuantityString(
+ R.plurals.minutes,
+ timeText,
+ timeText
+ )
+ preference.summary =
+ view.getString(R.string.minimum_time_summ, minutes)
+ true
+ }.getOrElse { Timber.w(it); false }
else -> true
}
}
diff --git a/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt b/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt
index 9495bb5..8ff8004 100644
--- a/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt
+++ b/app/src/main/java/com/javinator9889/handwashingreminder/utils/Constants.kt
@@ -42,6 +42,7 @@ object Preferences {
)
const val DONATIONS = "donations"
const val INITIAL_TUTORIAL_DONE = "app:tutorial:is_done"
+ const val ACTIVITY_MINIMUM_TIME = "activity:gms:minimumInterval"
}
object TimeConfig {
diff --git a/app/src/main/res/layout/preference_edit_text.xml b/app/src/main/res/layout/preference_edit_text.xml
new file mode 100644
index 0000000..fe704d1
--- /dev/null
+++ b/app/src/main/res/layout/preference_edit_text.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 3f658f5..563cab6 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -278,4 +278,11 @@
¡Añade otra más! 🙌
Bueno, quizás una menos 😅
Información de enfermedades
+ Tiempo mínimo en minutos…
+ Tiempo mínimo entre notificaciones
+ Recibirás notificaciones con un tiempo mínimo de %1$s entre ellas
+
+ - %d minuto
+ - %d minutos
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index aedd584..ff5966c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -306,4 +306,11 @@
Add another! 🙌
Well, maybe one less 😅
Diseases information
+ Minimum time in minutes…
+ Minimum time in between notifications
+ You will receive notifications with at least %1$s in between them
+
+ - %d minute
+ - %d minutes
+
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 6d6758a..4924349 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -57,6 +57,15 @@
android:key="activity:gms:tracking"
android:title="@string/activity_recognition"
app:summary="For enabling the activity recognition, you need both Google Play Services and permissions" />
+
+