From 66928cc74d40fba586127e4e584cde3086fce0ba Mon Sep 17 00:00:00 2001 From: MrSluffy Date: Tue, 7 Jan 2025 14:29:00 +0800 Subject: [PATCH] feat : App drawer color --- lawnchair/res/values/config.xml | 3 +++ lawnchair/res/values/strings.xml | 1 + .../src/app/lawnchair/preferences2/PreferenceManager2.kt | 8 ++++++++ .../colorpreference/ColorPreferenceModelList.kt | 7 +++++++ .../ui/preferences/destinations/AppDrawerPreferences.kt | 2 ++ lawnchair/src/app/lawnchair/util/LawnchairUtils.kt | 9 ++++++++- .../launcher3/uioverrides/states/AllAppsState.java | 4 +++- .../launcher3/allapps/ActivityAllAppsContainerView.java | 7 ++++++- 8 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml index a7eefecf0c..d2fe8d35ba 100644 --- a/lawnchair/res/values/config.xml +++ b/lawnchair/res/values/config.xml @@ -81,6 +81,9 @@ default + + default + lawnchair diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml index 78a11bed3e..5fa620692d 100644 --- a/lawnchair/res/values/strings.xml +++ b/lawnchair/res/values/strings.xml @@ -620,6 +620,7 @@ App drawer columns Row height Horizontal padding + Background color Hide from app drawer diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt index 93c1b28299..980f538b05 100644 --- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt +++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt @@ -139,6 +139,14 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre defaultValue = ColorOption.fromString(context.getString(R.string.config_default_hotseat_bg_color)), ) + val appDrawerBackgroundColor = preference( + key = stringPreferencesKey(name = "app_drawer_bg_color"), + parse = ColorOption::fromString, + save = ColorOption::toString, + onSet = { reloadHelper.reloadGrid() }, + defaultValue = ColorOption.fromString(context.getString(R.string.config_default_app_drawer_bg_color)), + ) + val notificationDotColor = preference( key = stringPreferencesKey(name = "notification_dot_color"), parse = ColorOption::fromString, diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt index dad2168d69..e3cb3b5907 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt @@ -31,6 +31,13 @@ class ColorPreferenceModelList(context: Context) { dynamicEntries = dynamicColorsWithDefault, ), ) + registerModel( + ColorPreferenceModel( + prefObject = prefs.appDrawerBackgroundColor, + labelRes = R.string.app_drawer_bg_color_label, + dynamicEntries = dynamicColorsWithDefault, + ), + ) registerModel( ColorPreferenceModel( prefObject = prefs.notificationDotColor, diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt index 6743338f3d..c91684dfc3 100644 --- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt +++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/AppDrawerPreferences.kt @@ -26,6 +26,7 @@ import app.lawnchair.preferences2.preferenceManager2 import app.lawnchair.ui.preferences.LocalIsExpandedScreen import app.lawnchair.ui.preferences.components.NavigationActionPreference import app.lawnchair.ui.preferences.components.SuggestionsPreference +import app.lawnchair.ui.preferences.components.colorpreference.ColorPreference import app.lawnchair.ui.preferences.components.controls.SliderPreference import app.lawnchair.ui.preferences.components.controls.SwitchPreference import app.lawnchair.ui.preferences.components.layout.DividerColumn @@ -53,6 +54,7 @@ fun AppDrawerPreferences( modifier = modifier, ) { PreferenceGroup(heading = stringResource(id = R.string.general_label)) { + ColorPreference(preference = prefs2.appDrawerBackgroundColor) SliderPreference( label = stringResource(id = R.string.background_opacity), adapter = prefs.drawerOpacity.getAdapter(), diff --git a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt index 8cde0de970..02e803b622 100644 --- a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt +++ b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt @@ -45,6 +45,7 @@ import androidx.core.graphics.ColorUtils import androidx.core.os.UserManagerCompat import app.lawnchair.preferences.PreferenceManager import app.lawnchair.preferences2.PreferenceManager2 +import app.lawnchair.theme.color.ColorOption import app.lawnchair.theme.color.tokens.ColorTokens import com.android.launcher3.R import com.android.launcher3.Utilities @@ -175,7 +176,13 @@ fun getFolderBackgroundAlpha(context: Context): Int { fun getAllAppsScrimColor(context: Context): Int { val opacity = PreferenceManager.getInstance(context).drawerOpacity.get() - val scrimColor = ColorTokens.AllAppsScrimColor.resolveColor(context) + val prefs2 = PreferenceManager2.getInstance(context) + var scrimColor = ColorTokens.AllAppsScrimColor.resolveColor(context) + val colorOptions: ColorOption = prefs2.appDrawerBackgroundColor.firstBlocking() + val color = colorOptions.colorPreferenceEntry.lightColor.invoke(context) + if (color != 0) { + scrimColor = color + } val alpha = (opacity * 255).roundToInt() return ColorUtils.setAlphaComponent(scrimColor, alpha) } diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java index 2043bf6cab..1f1fe62720 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java @@ -217,6 +217,8 @@ public class AllAppsState extends LauncherState { @Override public int getWorkspaceScrimColor(Launcher launcher) { - return LawnchairUtilsKt.getAllAppsScrimColor(launcher); + return launcher.getDeviceProfile().isTablet + ? launcher.getResources().getColor(android.R.color.transparent) + : LawnchairUtilsKt.getAllAppsScrimColor(launcher); } } diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java index e526114105..751ac7fd1d 100644 --- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java @@ -151,7 +151,7 @@ public class ActivityAllAppsContainerView protected WorkProfileManager mWorkManager; protected final PrivateProfileManager mPrivateProfileManager; protected final Point mFastScrollerOffset = new Point(); - protected final int mScrimColor; + protected int mScrimColor; protected final float mHeaderThreshold; protected final AllAppsSearchUiDelegate mSearchUiDelegate; @@ -832,6 +832,11 @@ public class ActivityAllAppsContainerView protected int getHeaderColor(float blendRatio) { var opacity = pref.getDrawerOpacity().get(); + var colorOptions = PreferenceExtensionsKt.firstBlocking(pref2.getAppDrawerBackgroundColor()); + var color = colorOptions.getColorPreferenceEntry().getLightColor().invoke(mContext); + if (color != 0) { + mScrimColor = color; + } return ColorUtils.setAlphaComponent( ColorUtils.blendARGB(mScrimColor, mHeaderProtectionColor, blendRatio), Math.round(opacity * 255));