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

Commit d1c19858 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Dark Theme doesnt forget car changes" into rvc-dev am: 88973641 am: 4c39009c

Change-Id: I11a4877246c854443df65851cb90773645f84cbf
parents 4d0cf88a 4c39009c
Loading
Loading
Loading
Loading
+22 −11
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ import java.util.Set;
import static android.app.UiModeManager.MODE_NIGHT_AUTO;
import static android.app.UiModeManager.MODE_NIGHT_CUSTOM;
import static android.app.UiModeManager.MODE_NIGHT_YES;
import static android.os.UserHandle.USER_SYSTEM;
import static android.util.TimeUtils.isTimeBetween;

final class UiModeManagerService extends SystemService {
@@ -151,6 +152,7 @@ final class UiModeManagerService extends SystemService {
    // Example: Activate dark mode in the day time until sunrise the next day
    private boolean mOverrideNightModeOn;
    private boolean mOverrideNightModeOff;
    private int mOverrideNightModeUser = USER_SYSTEM;

    private PowerManager.WakeLock mWakeLock;

@@ -668,10 +670,7 @@ final class UiModeManagerService extends SystemService {

                        mNightMode = mode;
                        resetNightModeOverrideLocked();
                        // Only persist setting if not in car mode
                        if (!mCarModeEnabled) {
                        persistNightMode(user);
                        }
                        // on screen off will update configuration instead
                        if ((mNightMode != MODE_NIGHT_AUTO && mNightMode != MODE_NIGHT_CUSTOM)
                                || shouldApplyAutomaticChangesImmediately()) {
@@ -730,6 +729,8 @@ final class UiModeManagerService extends SystemService {
                        unregisterScreenOffEventLocked();
                        mOverrideNightModeOff = !active;
                        mOverrideNightModeOn = active;
                        mOverrideNightModeUser = user;
                        persistNightModeOverrides(user);
                    } else if (mNightMode == UiModeManager.MODE_NIGHT_NO
                            && active) {
                        mNightMode = UiModeManager.MODE_NIGHT_YES;
@@ -1008,12 +1009,10 @@ final class UiModeManagerService extends SystemService {
    }

    private void persistNightMode(int user) {
        // Only persist setting if not in car mode
        if (mCarModeEnabled) return;
        Secure.putIntForUser(getContext().getContentResolver(),
                Secure.UI_NIGHT_MODE, mNightMode, user);
        Secure.putIntForUser(getContext().getContentResolver(),
                Secure.UI_NIGHT_MODE_OVERRIDE_ON, mOverrideNightModeOn ? 1 : 0, user);
        Secure.putIntForUser(getContext().getContentResolver(),
                Secure.UI_NIGHT_MODE_OVERRIDE_OFF, mOverrideNightModeOff ? 1 : 0, user);
        Secure.putLongForUser(getContext().getContentResolver(),
                Secure.DARK_THEME_CUSTOM_START_TIME,
                mCustomAutoNightModeStartMilliseconds.toNanoOfDay() / 1000, user);
@@ -1022,6 +1021,15 @@ final class UiModeManagerService extends SystemService {
                mCustomAutoNightModeEndMilliseconds.toNanoOfDay() / 1000, user);
    }

    private void persistNightModeOverrides(int user) {
        // Only persist setting if not in car mode
        if (mCarModeEnabled) return;
        Secure.putIntForUser(getContext().getContentResolver(),
                Secure.UI_NIGHT_MODE_OVERRIDE_ON, mOverrideNightModeOn ? 1 : 0, user);
        Secure.putIntForUser(getContext().getContentResolver(),
                Secure.UI_NIGHT_MODE_OVERRIDE_OFF, mOverrideNightModeOff ? 1 : 0, user);
    }

    private void updateConfigurationLocked() {
        int uiMode = mDefaultUiModeType;
        if (mUiModeLocked) {
@@ -1392,12 +1400,15 @@ final class UiModeManagerService extends SystemService {
        }
    }

    private void resetNightModeOverrideLocked() {
    private boolean resetNightModeOverrideLocked() {
        if (mOverrideNightModeOff || mOverrideNightModeOn) {
            mOverrideNightModeOff = false;
            mOverrideNightModeOn = false;
            persistNightMode(UserHandle.getCallingUserId());
            persistNightModeOverrides(mOverrideNightModeUser);
            mOverrideNightModeUser = USER_SYSTEM;
            return true;
        }
        return false;
    }

    private void registerVrStateListener() {
@@ -1538,7 +1549,7 @@ final class UiModeManagerService extends SystemService {
        public void onReceive(Context context, Intent intent) {
            synchronized (mLock) {
                final int currentId = intent.getIntExtra(
                        Intent.EXTRA_USER_HANDLE, UserHandle.USER_SYSTEM);
                        Intent.EXTRA_USER_HANDLE, USER_SYSTEM);
                // only update if the value is actually changed
                if (updateNightModeFromSettingsLocked(context, context.getResources(), currentId)) {
                    updateLocked(0, 0);