From 08158e30da0c329aa84b95056dcdef0d532d8ebb Mon Sep 17 00:00:00 2001 From: Patryk Michalik Date: Sat, 19 Feb 2022 13:07:47 +0100 Subject: [PATCH] =?UTF-8?q?Migrate=20=E2=80=9Cpref=5FshowSysUiScrim?= =?UTF-8?q?=E2=80=9D=20to=20Preferences=20DataStore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preferences/PreferenceManager.kt | 1 - .../preferences2/PreferenceManager2.kt | 5 +++++ .../SharedPreferencesMigration.kt | 2 +- .../ui/preferences/HomeScreenPreferences.kt | 13 +++++++++--- .../launcher3/graphics/SysUiScrim.java | 21 +++++++++++++------ 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt index 32acade985..5f57177b87 100644 --- a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt +++ b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt @@ -75,7 +75,6 @@ class PreferenceManager private constructor(private val context: Context) : Base val windowCornerRadius = IntPref("pref_windowCornerRadius", 80, recreate) val autoLaunchRoot = BoolPref("pref_autoLaunchRoot", false) val wallpaperScrolling = BoolPref("pref_wallpaperScrolling", true) - val showSysUiScrim = BoolPref("pref_showSysUiScrim", true) val allAppsIconLabels = BoolPref("pref_allAppsIconLabels", true, reloadGrid) val searchAutoShowKeyboard = BoolPref("pref_searchAutoShowKeyboard", false) val enableDebugMenu = BoolPref("pref_enableDebugMenu", false) diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index 3248a63dfa..e88072f403 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -86,6 +86,11 @@ class PreferenceManager2(private val context: Context) : PreferenceManager { defaultValue = true, ) + val showTopShadow = preference( + key = booleanPreferencesKey(name = "show_top_shadow"), + defaultValue = true, + ) + companion object { private val Context.preferencesDataStore by preferencesDataStore( name = "preferences", diff --git a/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt b/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt index caa30c9b33..471ad0807f 100644 --- a/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt +++ b/lawnchair/src/app/lawnchair/preferences2/SharedPreferencesMigration.kt @@ -30,7 +30,7 @@ class SharedPreferencesMigration(private val context: Context) { "pref_darkStatusBar" to "dark_status_bar", "pref_dockSearchBar" to "dock_search_bar", "pref_iconShape" to "icon_shape", "pref_themedHotseatQsb" to "themed_hotseat_qsb", "pref_accentColor2" to "accent_color", "hidden-app-set" to "hidden_apps", - "pref_showStatusBar" to "show_status_bar", + "pref_showStatusBar" to "show_status_bar", "pref_showSysUiScrim" to "show_top_shadow", ) fun produceMigration() = androidx.datastore.migrations.SharedPreferencesMigration( diff --git a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt index d7d20153d2..953127a5bc 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt @@ -49,6 +49,7 @@ interface HomeScreenPreferenceCollectorScope : PreferenceCollectorScope { val darkStatusBar: Boolean val roundedWidgets: Boolean val showStatusBar: Boolean + val showTopShadow: Boolean } @Composable @@ -57,11 +58,16 @@ fun HomeScreenPreferenceCollector(content: @Composable HomeScreenPreferenceColle val darkStatusBar by preferenceManager.darkStatusBar.state() val roundedWidgets by preferenceManager.roundedWidgets.state() val showStatusBar by preferenceManager.showStatusBar.state() - ifNotNull(darkStatusBar, roundedWidgets, showStatusBar) { + val showTopShadow by preferenceManager.showTopShadow.state() + ifNotNull( + darkStatusBar, roundedWidgets, + showStatusBar, showTopShadow, + ) { object : HomeScreenPreferenceCollectorScope { override val darkStatusBar = it[0] as Boolean override val roundedWidgets = it[1] as Boolean override val showStatusBar = it[2] as Boolean + override val showTopShadow: Boolean = it[3] as Boolean override val coroutineScope = rememberCoroutineScope() override val preferenceManager = preferenceManager }.content() @@ -120,9 +126,10 @@ fun HomeScreenPreferences() { label = stringResource(id = R.string.show_status_bar), edit = { showStatusBar.set(value = it) }, ) - SwitchPreference( - prefs.showSysUiScrim.getAdapter(), + SwitchPreference2( + checked = showTopShadow, label = stringResource(id = R.string.show_sys_ui_scrim), + edit = { showTopShadow.set(value = it) }, ) } PreferenceGroup(heading = stringResource(id = R.string.icons)) { diff --git a/src/com/android/launcher3/graphics/SysUiScrim.java b/src/com/android/launcher3/graphics/SysUiScrim.java index 58ef0d87dd..22b60202db 100644 --- a/src/com/android/launcher3/graphics/SysUiScrim.java +++ b/src/com/android/launcher3/graphics/SysUiScrim.java @@ -12,6 +12,8 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. + * + * Modifications copyright 2022, Lawnchair */ package com.android.launcher3.graphics; @@ -49,8 +51,10 @@ import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.DynamicResource; import com.android.launcher3.util.Themes; import com.android.systemui.plugins.ResourceProvider; +import com.patrykmichalik.preferencemanager.PreferenceExtensionsKt; -import app.lawnchair.preferences.PreferenceManager; +import app.lawnchair.preferences2.PreferenceManager2; +import app.lawnchair.util.ViewExtensionsKt; /** * View scrim which draws behind hotseat and workspace @@ -145,11 +149,16 @@ public class SysUiScrim implements View.OnAttachStateChangeListener { view.addOnAttachStateChangeListener(this); - PreferenceManager prefs = PreferenceManager.getInstance(mRoot.getContext()); - prefs.getShowSysUiScrim().subscribeValues(mRoot, (show) -> { - mHideSysUiScrim = !show; - mRoot.invalidate(); - }); + PreferenceManager2 preferenceManager2 = PreferenceManager2.getInstance(mRoot.getContext()); + PreferenceExtensionsKt.onEach( + preferenceManager2.getShowTopShadow(), + ViewExtensionsKt.getViewAttachedScope(mRoot), + (showTopShadow) -> { + mHideSysUiScrim = !showTopShadow; + mRoot.invalidate(); + return null; + } + ); } /**