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

Commit a10c52e0 authored by Jesse Chan's avatar Jesse Chan Committed by Luca Stefani
Browse files

SystemUI: support black theme for dark mode [1/4]



Change-Id: I57cd53de8f2c1e4d445441b514875b6af915b858
Signed-off-by: default avatarJesse Chan <jc@lineageos.org>
parent 195653af
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -36,9 +36,12 @@ import android.util.Log;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.tuner.TunerService;

import com.google.android.collect.Sets;

import lineageos.providers.LineageSettings;

import org.json.JSONException;
import org.json.JSONObject;

@@ -61,6 +64,36 @@ public class ThemeOverlayController extends SystemUI {
    private ThemeOverlayManager mThemeManager;
    private UserManager mUserManager;

    static final String KEY_BERRY_BLACK_THEME =
            "lineagesystem:" + LineageSettings.System.BERRY_BLACK_THEME;
    static final String OVERLAY_BERRY_BLACK_THEME =
            "org.lineageos.overlay.customization.blacktheme";
    private final TunerService.Tunable mTunable =
            new TunerService.Tunable() {
                @Override
                public void onTuningChanged(String key, String newValue) {
                    if (KEY_BERRY_BLACK_THEME.equals(key)) {
                        applyBlackTheme(TunerService.parseIntegerSwitch(newValue, false));
                    }
                }
            };

    private OverlayManager mOverlayManager;

    private void applyBlackTheme(boolean state) {
        UserHandle userId = UserHandle.of(ActivityManager.getCurrentUser());
        try {
            mOverlayManager.setEnabled(OVERLAY_BERRY_BLACK_THEME, state, userId);
            if (DEBUG) {
                Log.d(TAG, "applyBlackTheme: overlayPackage="
                        + OVERLAY_BERRY_BLACK_THEME + " userId=" + userId);
            }
        } catch (Exception e) {
            Log.e(TAG, "Failed to " + (state ? "enable" : "disable")
                    + " overlay " + OVERLAY_BERRY_BLACK_THEME + " for user " + userId);
        }
    }

    @Override
    public void start() {
        if (DEBUG) Log.d(TAG, "Start");
@@ -94,6 +127,8 @@ public class ThemeOverlayController extends SystemUI {
                    }
                },
                UserHandle.USER_ALL);
        mOverlayManager = mContext.getSystemService(OverlayManager.class);
        Dependency.get(TunerService.class).addTunable(mTunable, KEY_BERRY_BLACK_THEME);
    }

    private void updateThemeOverlays() {