From 5bfb64b6e1fe6e78a1b15869332a33c40afde56c Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 26 May 2020 21:17:59 +0800 Subject: [PATCH 22/31] SystemUI: Re-evaluate system theme on UI mode change - Need for power menu to set accurate colors Change-Id: I05d41eaf8ea19ce3b6ce659d01da33cf55de3b7e --- .../systemui/theme/ThemeOverlayController.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java index 395bb6c6f1af..e27ec424a444 100644 --- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java +++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java @@ -75,6 +75,8 @@ import com.android.systemui.monet.ColorScheme; import com.android.systemui.monet.Style; import com.android.systemui.monet.TonalPalette; import com.android.systemui.settings.UserTracker; +import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; import com.android.systemui.util.settings.SecureSettings; @@ -138,6 +140,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable { private final boolean mIsMonetEnabled; private final boolean mIsFidelityEnabled; private final UserTracker mUserTracker; + private final ConfigurationController mConfigurationController; private final DeviceProvisionedController mDeviceProvisionedController; private final Resources mResources; // Current wallpaper colors associated to a user. @@ -176,6 +179,15 @@ public class ThemeOverlayController implements CoreStartable, Dumpable { // Determines if we should ignore THEME_CUSTOMIZATION_OVERLAY_PACKAGES setting changes. private boolean mSkipSettingChange; + private final ConfigurationListener mConfigurationListener = + new ConfigurationListener() { + @Override + public void onUiModeChanged() { + Log.i(TAG, "Re-applying theme on UI change"); + reevaluateSystemTheme(true /* forceReload */); + } + }; + private final DeviceProvisionedListener mDeviceProvisionedListener = new DeviceProvisionedListener() { @Override @@ -402,11 +414,13 @@ public class ThemeOverlayController implements CoreStartable, Dumpable { FeatureFlags featureFlags, @Main Resources resources, WakefulnessLifecycle wakefulnessLifecycle, - UiModeManager uiModeManager) { + UiModeManager uiModeManager, + ConfigurationController configurationController) { mContext = context; mIsMonochromaticEnabled = featureFlags.isEnabled(Flags.MONOCHROMATIC_THEME); mIsMonetEnabled = featureFlags.isEnabled(Flags.MONET); mIsFidelityEnabled = featureFlags.isEnabled(Flags.COLOR_FIDELITY); + mConfigurationController = configurationController; mDeviceProvisionedController = deviceProvisionedController; mBroadcastDispatcher = broadcastDispatcher; mUserManager = userManager; @@ -518,6 +532,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable { mUserTracker.addCallback(mUserTrackerCallback, mMainExecutor); + mConfigurationController.addCallback(mConfigurationListener); mDeviceProvisionedController.addCallback(mDeviceProvisionedListener); // All wallpaper color and keyguard logic only applies when Monet is enabled. -- 2.34.1