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

Commit 5d333991 authored by Sunny Shao's avatar Sunny Shao
Browse files

Fix subtext didn't change after toggle changed

Add the ContentObserver to monitor the key value changed in the Settings.System.

Fixes: 140475264
Test: manual test
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.display
Change-Id: I3018498ae32fb282bc180db7864a9813a168b9c0
parent 9415f4d3
Loading
Loading
Loading
Loading
+38 −3
Original line number Diff line number Diff line
@@ -18,17 +18,34 @@ import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;

import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;

import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;


public class AutoBrightnessPreferenceController extends TogglePreferenceController {

public class AutoBrightnessPreferenceController extends TogglePreferenceController implements
        LifecycleObserver, OnStart, OnStop {
    private final String SYSTEM_KEY = SCREEN_BRIGHTNESS_MODE;
    private final int DEFAULT_VALUE = SCREEN_BRIGHTNESS_MODE_MANUAL;

    private Preference mPreference;
    private ContentObserver mContentObserver =
            new ContentObserver(new Handler(Looper.getMainLooper())) {
                @Override
                public void onChange(boolean selfChange) {
                    refreshSummary(mPreference);
                }
            };

    public AutoBrightnessPreferenceController(Context context, String key) {
        super(context, key);
    }
@@ -55,10 +72,28 @@ public class AutoBrightnessPreferenceController extends TogglePreferenceControll
                : UNSUPPORTED_ON_DEVICE;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(getPreferenceKey());
    }

    @Override
    public CharSequence getSummary() {
        return mContext.getText(isChecked()
                ? R.string.auto_brightness_summary_on
                : R.string.auto_brightness_summary_off);
    }

    @Override
    public void onStart() {
        mContext.getContentResolver().registerContentObserver(
                Settings.System.getUriFor(SYSTEM_KEY), false /* notifyForDescendants */,
                mContentObserver);
    }

    @Override
    public void onStop() {
        mContext.getContentResolver().unregisterContentObserver(mContentObserver);
    }
}