Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db36b428 authored by Joey's avatar Joey
Browse files

systemui: introduce berry styles



Change-Id: I61d0861112ae9b25db20b8d5e57d2a5f8a26b833
Signed-off-by: default avatarHarry Youd <harry@harryyoud.co.uk>
Signed-off-by: default avatarJoey <joey@lineageos.org>
parent c88c0180
Loading
Loading
Loading
Loading
+51 −7
Original line number Diff line number Diff line
@@ -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) {