From adfdc67bd6e8b2faa5dde37956ab9fc0b54b582e Mon Sep 17 00:00:00 2001 From: MrSluffy Date: Fri, 20 Dec 2024 13:24:07 +0800 Subject: [PATCH] feat : add toggle for dynamic hide stat bar clock --- lawnchair/res/values/config.xml | 1 + lawnchair/res/values/strings.xml | 2 ++ lawnchair/src/app/lawnchair/LawnchairLauncher.kt | 14 ++++++++++---- .../lawnchair/preferences2/PreferenceManager2.kt | 6 ++++++ .../destinations/HomeScreenPreferences.kt | 8 ++++++++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml index 1649908d55..de6f60229d 100644 --- a/lawnchair/res/values/config.xml +++ b/lawnchair/res/values/config.xml @@ -102,6 +102,7 @@ false true false + false true true false diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml index 67ea81e33b..5566eca656 100644 --- a/lawnchair/res/values/strings.xml +++ b/lawnchair/res/values/strings.xml @@ -520,6 +520,8 @@ Status bar Show status bar Dark status bar + Status bar clock + Dynamically hide status bar clock in first screen Text color Light diff --git a/lawnchair/src/app/lawnchair/LawnchairLauncher.kt b/lawnchair/src/app/lawnchair/LawnchairLauncher.kt index ca9df9998a..6e6c613e6a 100644 --- a/lawnchair/src/app/lawnchair/LawnchairLauncher.kt +++ b/lawnchair/src/app/lawnchair/LawnchairLauncher.kt @@ -176,10 +176,16 @@ class LawnchairLauncher : QuickstepLauncher() { } }.launchIn(scope = lifecycleScope) - if (LawnchairApp.isRecentsEnabled) { - launcher.stateManager.addStateListener(statusBarClockListener) - } else { - launcher.stateManager.removeStateListener(statusBarClockListener) + preferenceManager2.statusBarClock.get().distinctUntilChanged().onEach { + with(launcher.stateManager) { + if (it) { + addStateListener(statusBarClockListener) + } else { + removeStateListener(statusBarClockListener) + // Make sure status bar clock is restored when the preference is toggled off + LawnchairApp.instance.restoreClockInStatusBar() + } + } } preferenceManager2.rememberPosition.get().onEach { with(launcher.stateManager) { diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index a3dc70b371..3e45d322dd 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -228,6 +228,12 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre defaultValue = context.resources.getBoolean(R.bool.config_default_show_status_bar), ) + val statusBarClock = preference( + key = booleanPreferencesKey(name = "status_bar_clock"), + defaultValue = context.resources.getBoolean(R.bool.config_default_dynamic_hide_status_bar_clock), + onSet = { reloadHelper.reloadGrid() }, + ) + val rememberPosition = preference( key = booleanPreferencesKey(name = "all_apps_remember_position"), defaultValue = context.resources.getBoolean(R.bool.config_default_remember_position), diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt index 9c7b3a6802..8e5231199b 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt @@ -23,6 +23,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import app.lawnchair.LawnchairApp import app.lawnchair.data.iconoverride.IconOverrideRepository import app.lawnchair.nexuslauncher.OverlayCallbackImpl import app.lawnchair.preferences.getAdapter @@ -160,6 +161,13 @@ fun HomeScreenPreferences( adapter = prefs2.darkStatusBar.getAdapter(), label = stringResource(id = R.string.dark_status_bar_label), ) + if (LawnchairApp.isRecentsEnabled) { + SwitchPreference( + adapter = prefs2.statusBarClock.getAdapter(), + label = stringResource(id = R.string.status_bar_clock_label), + description = stringResource(id = R.string.status_bar_clock_description), + ) + } } } PreferenceGroup(heading = stringResource(id = R.string.icons)) {