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

Commit 45a2c3e5 authored by Jacky Wang's avatar Jacky Wang
Browse files

Refactor DarkModePreference for catalyst

Bug: 375132235
Flag: EXEMPT refactor
Test: N/A
Change-Id: I17a63ad62d3b9fced4305d464372f2eab5023e3f
parent 5c751da6
Loading
Loading
Loading
Loading
+24 −20
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@

package com.android.settings.display.darkmode;

import android.app.UiModeManager;
import android.content.Context;
import android.content.res.Configuration;
import android.os.PowerManager;
@@ -28,40 +27,45 @@ import com.android.settingslib.PrimarySwitchPreference;
 */
public class DarkModePreference extends PrimarySwitchPreference {

    private UiModeManager mUiModeManager;
    private DarkModeObserver mDarkModeObserver;
    private PowerManager mPowerManager;
    private Runnable mCallback;

    private TimeFormatter mFormat;
    private boolean isCatalystEnabled;

    public DarkModePreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * Sets if catalyst is enabled on the preference.
     */
    public void setCatalystEnabled(boolean catalystEnabled) {
        isCatalystEnabled = catalystEnabled;
    }

    @Override
    public void onAttached() {
        super.onAttached();
        if (!isCatalystEnabled) {
            Context context = getContext();
            mDarkModeObserver = new DarkModeObserver(context);
        mUiModeManager = context.getSystemService(UiModeManager.class);
        mPowerManager = context.getSystemService(PowerManager.class);
        mFormat = new TimeFormatter(context);
        mCallback = () -> {
            final boolean batterySaver = mPowerManager.isPowerSaveMode();
            final boolean active = (getContext().getResources().getConfiguration().uiMode
            Runnable callback = () -> {
                PowerManager powerManager = context.getSystemService(PowerManager.class);
                final boolean batterySaver = powerManager.isPowerSaveMode();
                final boolean active = (context.getResources().getConfiguration().uiMode
                        & Configuration.UI_MODE_NIGHT_YES) != 0;
                setSwitchEnabled(!batterySaver);
                updateSummary(batterySaver, active);
            };
        mDarkModeObserver.subscribe(mCallback);
            mDarkModeObserver.subscribe(callback);
        }

    @Override
    public void onAttached() {
        super.onAttached();
        mDarkModeObserver.subscribe(mCallback);
    }

    @Override
    public void onDetached() {
        super.onDetached();
        if (!isCatalystEnabled) {
            mDarkModeObserver.unsubscribe();
        }
    }

    private void updateSummary(boolean batterySaver, boolean active) {
        if (batterySaver) {