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

Commit 302a9567 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊 Committed by Bruno Martins
Browse files

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



Co-authored-by: default avatarJesse Chan <jc@lineageos.org>
Co-authored-by: default avatarMichael Bestas <mkbestas@gmail.com>
Change-Id: I57cd53de8f2c1e4d445441b514875b6af915b858
parent fc2d61b2
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -120,6 +120,8 @@ import javax.inject.Inject;
@SysUISingleton
public class ThemeOverlayController implements CoreStartable, Dumpable {
    protected static final String TAG = "ThemeOverlayController";
    protected static final String OVERLAY_BERRY_BLACK_THEME =
            "org.lineageos.overlay.customization.blacktheme";
    private static final boolean DEBUG = true;

    private final ThemeOverlayApplier mThemeManager;
@@ -482,6 +484,27 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
            reevaluateSystemTheme(true /* forceReload */);
        });

        mSecureSettings.registerContentObserverForUserSync(
                LineageSettings.Secure.getUriFor(LineageSettings.Secure.BERRY_BLACK_THEME),
                false,
                new ContentObserver(mBgHandler) {
                    @Override
                    public void onChange(boolean selfChange, Collection<Uri> collection, int flags,
                            int userId) {
                        if (DEBUG) Log.d(TAG, "Overlay changed for user: " + userId);
                        if (mUserTracker.getUserId() != userId) {
                            return;
                        }
                        if (!mDeviceProvisionedController.isUserSetup(userId)) {
                            Log.i(TAG, "Theme application deferred when setting changed.");
                            mDeferredThemeEvaluation = true;
                            return;
                        }
                        reevaluateSystemTheme(true /* forceReload */);
                    }
                },
                UserHandle.USER_ALL);

        mSystemSettings.registerContentObserverForUserSync(
                LineageSettings.System.getUriFor(LineageSettings.System.STATUS_BAR_BATTERY_STYLE),
                false,
@@ -807,6 +830,14 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
            categoryToPackage.put(OVERLAY_CATEGORY_DYNAMIC_COLOR, mDynamicOverlay.getIdentifier());
        }

        boolean isBlackMode = (LineageSettings.Secure.getIntForUser(
                mContext.getContentResolver(), LineageSettings.Secure.BERRY_BLACK_THEME,
                0, currentUser) == 1) && isNightMode();
        if (categoryToPackage.containsKey(OVERLAY_CATEGORY_SYSTEM_PALETTE) && isBlackMode) {
            OverlayIdentifier blackTheme = new OverlayIdentifier(OVERLAY_BERRY_BLACK_THEME);
            categoryToPackage.put(OVERLAY_CATEGORY_SYSTEM_PALETTE, blackTheme);
        }

        Set<UserHandle> managedProfiles = new HashSet<>();
        for (UserInfo userInfo : mUserManager.getEnabledProfiles(currentUser)) {
            if (userInfo.isProfile()) {