diff options
author | Joey <joey@lineageos.org> | 2017-12-28 20:28:01 +0100 |
---|---|---|
committer | Joey <joey@lineageos.org> | 2018-02-11 20:21:15 +0100 |
commit | db36b4284a36032c98ece6741e576ebf5e6d6455 (patch) | |
tree | 4298aa780be17deefbe80b277410905731db7ce9 | |
parent | c88c0180f0ec60a213509bd491e8fbc5ce4d5930 (diff) | |
download | android_frameworks_base-staging/lineage-15.1.tar.gz android_frameworks_base-staging/lineage-15.1.tar.bz2 android_frameworks_base-staging/lineage-15.1.zip |
systemui: introduce berry stylesstaging/lineage-15.1
Change-Id: I61d0861112ae9b25db20b8d5e57d2a5f8a26b833
Signed-off-by: Harry Youd <harry@harryyoud.co.uk>
Signed-off-by: Joey <joey@lineageos.org>
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 38838b1dc53..642f5f5bbaa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -271,6 +271,7 @@ import java.util.Map; import java.util.Set; import java.util.Stack; +import lineageos.hardware.LiveDisplayManager; import lineageos.providers.LineageSettings; public class StatusBar extends SystemUI implements DemoMode, @@ -943,6 +944,12 @@ public class StatusBar extends SystemUI implements DemoMode, mLockscreenSettingsObserver, UserHandle.USER_ALL); + mContext.getContentResolver().registerContentObserver( + LineageSettings.System.getUriFor(LineageSettings.System.BERRY_GLOBAL_STYLE), + true, + mThemeSettingsObserver, + UserHandle.USER_ALL); + mBarService = IStatusBarService.Stub.asInterface( ServiceManager.getService(Context.STATUS_BAR_SERVICE)); @@ -3008,14 +3015,26 @@ public class StatusBar extends SystemUI implements DemoMode, } public boolean isUsingDarkTheme() { - OverlayInfo themeInfo = null; + OverlayInfo systemuiThemeInfo = null; try { - themeInfo = mOverlayManager.getOverlayInfo("com.android.systemui.theme.dark", + systemuiThemeInfo = mOverlayManager.getOverlayInfo("org.lineageos.overlay.dark", mCurrentUserId); } catch (RemoteException e) { e.printStackTrace(); } - return themeInfo != null && themeInfo.isEnabled(); + return systemuiThemeInfo != null && systemuiThemeInfo.isEnabled(); + } + + private boolean isLiveDisplayNightModeOn() { + // SystemUI is initialized before LiveDisplay, so the service may not + // be ready when this is called the first time + LiveDisplayManager manager = LiveDisplayManager.getInstance(mContext); + try { + return manager.isNightModeEnabled(); + } catch (NullPointerException e) { + Log.w(TAG, e.getMessage()); + } + return false; } @Nullable @@ -4919,14 +4938,32 @@ public class StatusBar extends SystemUI implements DemoMode, protected void updateTheme() { final boolean inflated = mStackScroller != null; - // The system wallpaper defines if QS should be light or dark. + // 0 = auto, 1 = time-based, 2 = light, 3 = dark + final int globalStyleSetting = LineageSettings.System.getInt(mContext.getContentResolver(), + LineageSettings.System.BERRY_GLOBAL_STYLE, 0); WallpaperColors systemColors = mColorExtractor .getWallpaperColors(WallpaperManager.FLAG_SYSTEM); - final boolean useDarkTheme = systemColors != null - && (systemColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; + final boolean useDarkTheme; + + switch (globalStyleSetting) { + case 1: + useDarkTheme = isLiveDisplayNightModeOn(); + break; + case 2: + useDarkTheme = false; + break; + case 3: + useDarkTheme = true; + break; + default: + useDarkTheme = systemColors != null && (systemColors.getColorHints() & + WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; + break; + } + if (isUsingDarkTheme() != useDarkTheme) { try { - mOverlayManager.setEnabled("com.android.systemui.theme.dark", + mOverlayManager.setEnabled("org.lineageos.overlay.dark", useDarkTheme, mCurrentUserId); } catch (RemoteException e) { Log.w(TAG, "Can't change theme", e); @@ -6083,6 +6120,13 @@ public class StatusBar extends SystemUI implements DemoMode, } }; + protected final ContentObserver mThemeSettingsObserver = new ContentObserver(mHandler) { + @Override + public void onChange(boolean selfChange) { + updateTheme(); + } + }; + private final ContentObserver mLockscreenSettingsObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { |