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

Commit 252b9d1c authored by Joey's avatar Joey Committed by Sam Mortimer
Browse files

SystemUI: Berry styles



Author: Joey <joey@lineageos.org>
Date:   Thu Dec 28 20:28:01 2017 +0100

    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>

Author: Joey <joey@lineageos.org>
Date:   Fri Mar 9 22:49:01 2018 +0100

    base: update UiManager's night mode according to berry state

    Change-Id: I2eb43f1760e95246b81e487f420f42550ef3ddcd
    Signed-off-by: default avatarJoey <joey@lineageos.org>

Author: Joey <joey@lineageos.org>
Date:   Thu Jul 5 21:14:01 2018 +0200

    systemUi: styles: support more dark overlays

    Change-Id: I4fafa2b1e342608e2690c3dda7cb06aaf88247ba
    Signed-off-by: default avatarJoey <joey@lineageos.org>

Change-Id: Ia75685e4f44ecd22e781a32d06a2a5c885b559ed
parent 4ac07a64
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,9 @@
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <!-- DayNight mode -->
    <uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE" />

    <!-- SystemUI Tuner -->
    <application>
        <activity-alias
+58 −5
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.app.TaskStackBuilder;
import android.app.UiModeManager;
import android.app.WallpaperColors;
import android.app.WallpaperInfo;
import android.app.WallpaperManager;
@@ -248,7 +249,9 @@ import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.volume.VolumeComponent;

import lineageos.hardware.LiveDisplayManager;
import lineageos.providers.LineageSettings;
import lineageos.style.StyleInterface;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -285,6 +288,8 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
            "lineagesecure:" + LineageSettings.Secure.LOCKSCREEN_MEDIA_METADATA;
    private static final String FORCE_SHOW_NAVBAR =
            "lineagesystem:" + LineageSettings.System.FORCE_SHOW_NAVBAR;
    private static final String BERRY_GLOBAL_STYLE =
            "lineagesystem:" + LineageSettings.System.BERRY_GLOBAL_STYLE;

    private static final String BANNER_ACTION_CANCEL =
            "com.android.systemui.statusbar.banner_action_cancel";
@@ -482,6 +487,8 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl

    private ScreenPinningRequest mScreenPinningRequest;

    private UiModeManager mUiModeManager;

    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);

    Runnable mLongPressBrightnessChange = new Runnable() {
@@ -705,6 +712,7 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
        tunerService.addTunable(this, STATUS_BAR_BRIGHTNESS_CONTROL);
        tunerService.addTunable(this, LOCKSCREEN_MEDIA_METADATA);
        tunerService.addTunable(this, FORCE_SHOW_NAVBAR);
        tunerService.addTunable(this, BERRY_GLOBAL_STYLE);

        mDisplayManager = mContext.getSystemService(DisplayManager.class);

@@ -837,6 +845,8 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
        mScreenPinningRequest = new ScreenPinningRequest(mContext);
        mFalsingManager = FalsingManager.getInstance(mContext);

        mUiModeManager = mContext.getSystemService(UiModeManager.class);

        Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(this);

        Dependency.get(ConfigurationController.class).addCallback(this);
@@ -2148,7 +2158,7 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
    public boolean isUsingDarkTheme() {
        OverlayInfo themeInfo = null;
        try {
            themeInfo = mOverlayManager.getOverlayInfo("com.android.systemui.theme.dark",
            themeInfo = mOverlayManager.getOverlayInfo(getDarkOverlay(),
                    mLockscreenUserManager.getCurrentUserId());
        } catch (RemoteException e) {
            e.printStackTrace();
@@ -2156,6 +2166,24 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
        return themeInfo != null && themeInfo.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;
    }

    private String getDarkOverlay() {
        return LineageSettings.System.getString(mContext.getContentResolver(),
                LineageSettings.System.BERRY_DARK_OVERLAY,
                StyleInterface.OVERLAY_DARK_DEFAULT);
    }

    @Nullable
    public View getAmbientIndicationContainer() {
        return mAmbientIndicationContainer;
@@ -4047,19 +4075,42 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
    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) {
            mUiOffloadThread.submit(() -> {
                try {
                    mOverlayManager.setEnabled("com.android.systemui.theme.dark",
                    mOverlayManager.setEnabled(getDarkOverlay(),
                            useDarkTheme, mLockscreenUserManager.getCurrentUserId());
                } catch (RemoteException e) {
                    Log.w(TAG, "Can't change theme", e);
                }

                if (mUiModeManager != null) {
                    mUiModeManager.setNightMode(useDarkTheme ?
                            UiModeManager.MODE_NIGHT_YES : UiModeManager.MODE_NIGHT_NO);
                }
            });
        }

@@ -5803,6 +5854,8 @@ public class StatusBar extends SystemUI implements DemoMode, TunerService.Tunabl
                mWindowManager.removeViewImmediate(mNavigationBarView);
                mNavigationBarView = null;
            }
        } else if (BERRY_GLOBAL_STYLE.equals(key)) {
            updateTheme();
        }
    }
    // End Extra BaseStatusBarMethods.