From ac2aa49ca12e434b9cf8a4734ee6cf06f999b983 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 11 Sep 2024 15:05:05 +0200 Subject: [PATCH] added option to hide seconds --- .../de/jrpie/android/launcher/HomeActivity.kt | 13 +++++-- .../LauncherPreferences$Config.java | 1 + .../launcher/SettingsFragmentLauncher.kt | 36 +++++++++++++++++-- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values/donottranslate.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 4 +++ 7 files changed, 53 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt index d0d074d..fd02fa4 100644 --- a/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt @@ -100,7 +100,16 @@ class HomeActivity: UIObject, AppCompatActivity(), val timeVisible = LauncherPreferences.clock().timeVisible() var dateFMT = "yyyy-MM-dd" - var timeFMT = "HH:mm:ss" + var timeFMT = "HH:mm" + var period = 100L + if (LauncherPreferences.clock().showSeconds()) { + timeFMT += ":ss" + } + /* + I thought about adding an option to show microseconds as well ( timeFMT += ".SSS" ). + However setting period ot 1L (or even 10L) causes high CPU load, + so that doesn't seem to be a good idea. + */ if (LauncherPreferences.clock().localized()) { dateFMT = android.text.format.DateFormat.getBestDateTimePattern(locale, dateFMT) timeFMT = android.text.format.DateFormat.getBestDateTimePattern(locale, timeFMT) @@ -119,7 +128,7 @@ class HomeActivity: UIObject, AppCompatActivity(), binding.homeUpperView.isVisible = upperVisible binding.homeLowerView.isVisible = lowerVisible - clockTimer = fixedRateTimer("clockTimer", true, 0L, 100) { + clockTimer = fixedRateTimer("clockTimer", true, 0L, period) { this@HomeActivity.runOnUiThread { if (lowerVisible) { val t = lowerFormat.format(Date()) diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java index 0205c74..b63b06f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java @@ -36,6 +36,7 @@ import eu.jonahbauer.android.preference.annotations.Preferences; @Preference(name = "time_visible", type = boolean.class, defaultValue = "true"), @Preference(name = "flip_date_time", type = boolean.class, defaultValue = "false"), @Preference(name = "localized", type = boolean.class, defaultValue = "false"), + @Preference(name = "show_seconds", type = boolean.class, defaultValue = "true"), }), @PreferenceGroup(name = "display", prefix = "settings_display_", suffix = "_key", value = { @Preference(name = "screen_timeout_disabled", type = boolean.class, defaultValue = "false"), diff --git a/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt b/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt index 10fdc44..adfc67b 100644 --- a/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt +++ b/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt @@ -2,6 +2,7 @@ package de.jrpie.android.launcher.settings.launcher import android.content.Context import android.content.Intent +import android.content.SharedPreferences import android.os.Bundle import androidx.preference.PreferenceFragmentCompat import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -16,10 +17,38 @@ import de.jrpie.android.launcher.setDefaultHomeScreen */ class SettingsFragmentLauncher : PreferenceFragmentCompat() { + + private var sharedPreferencesListener = + SharedPreferences.OnSharedPreferenceChangeListener { _, prefKey -> + if(prefKey?.startsWith("clock.") == true) { + updateVisibility() + } + } + + private fun updateVisibility(){ + val showSeconds = findPreference( + LauncherPreferences.clock().keys().showSeconds() + ) + val timeVisible = LauncherPreferences.clock().timeVisible() + showSeconds?.isVisible = timeVisible + } + + override fun onStart() { + super.onStart() + LauncherPreferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(sharedPreferencesListener) + } + + override fun onPause() { + LauncherPreferences.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener) + super.onPause() + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) - val selectWallpaper = findPreference(LauncherPreferences.theme().keys().wallpaper()) + val selectWallpaper = findPreference( + LauncherPreferences.theme().keys().wallpaper() + ) selectWallpaper?.setOnPreferenceClickListener { // https://github.com/LineageOS/android_packages_apps_Trebuchet/blob/6caab89b21b2b91f0a439e1fd8c4510dcb255819/src/com/android/launcher3/views/OptionsPopupView.java#L271 val intent = Intent(Intent.ACTION_SET_WALLPAPER) @@ -28,10 +57,13 @@ class SettingsFragmentLauncher : PreferenceFragmentCompat() { startActivity(intent) true } - val chooseHomeScreen = findPreference(LauncherPreferences.general().keys().chooseHomeScreen()) + val chooseHomeScreen = findPreference( + LauncherPreferences.general().keys().chooseHomeScreen() + ) chooseHomeScreen?.setOnPreferenceClickListener { setDefaultHomeScreen(requireContext(), checkDefault = false) true } + updateVisibility() } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5460b5b..99cd7f0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -139,4 +139,5 @@ Mehr Optionen Benachrichtigungen Fehler: Die Funktion \"Benachrichtigungen\" wird von deinem Gerät leider nicht unterstützt. + Sekunden anzeigen diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 658a03d..10a1d86 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -77,6 +77,7 @@ --> clock.font clock.time_visible + clock.show_seconds clock.date_visible clock.date_localized clock.date_time_flip diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 95bbbce..1c98158 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -93,6 +93,7 @@ Show time Show date Use localized date format + Show seconds Flip date and time Choose a wallpaper diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 87ba943..774f4be 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -61,6 +61,10 @@ android:key="@string/settings_clock_time_visible_key" android:defaultValue="true" android:title="@string/settings_clock_time_visible" /> +