From f38cec326aed4e598511bea0d462e738174dd9de Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Tue, 26 Apr 2022 01:50:43 +0800 Subject: [PATCH] Fix the description of one-handed mode doesn't change immediately in Gestures page after users turn on/off in Quick Settings Add ContentObserver URI for observing when settings key "one_handed_mode_enabled" changes. Bug: 230041450 Test: manually verified on System > Gestures > One-handed mode item when turned on/off in Quick Settings Test: make RunSettingsRoboTests ROBOTEST_FILTER= "com.android.settings.gestures. OneHandedEnablePreferenceControllerTest" Change-Id: Id6bb53692181dfc3c8a1006017b5a22462dc4ad9 --- .../OneHandedEnablePreferenceController.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java index 29004c8f1fd..6aac7723435 100644 --- a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java +++ b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java @@ -17,17 +17,29 @@ package com.android.settings.gestures; import android.content.Context; +import android.net.Uri; + +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settingslib.core.lifecycle.LifecycleObserver; +import com.android.settingslib.core.lifecycle.events.OnStart; +import com.android.settingslib.core.lifecycle.events.OnStop; /** * Preference controller for One-handed mode shortcut settings */ -public class OneHandedEnablePreferenceController extends BasePreferenceController { +public class OneHandedEnablePreferenceController extends BasePreferenceController + implements OneHandedSettingsUtils.TogglesCallback, LifecycleObserver, OnStart, OnStop { + + private final OneHandedSettingsUtils mUtils; + private Preference mPreference; public OneHandedEnablePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mUtils = new OneHandedSettingsUtils(context); } @Override @@ -41,4 +53,30 @@ public class OneHandedEnablePreferenceController extends BasePreferenceControlle OneHandedSettingsUtils.isOneHandedModeEnabled(mContext) ? R.string.gesture_setting_on : R.string.gesture_setting_off); } + + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = screen.findPreference(getPreferenceKey()); + } + + @Override + public void onStart() { + mUtils.registerToggleAwareObserver(this); + } + + @Override + public void onStop() { + mUtils.unregisterToggleAwareObserver(); + } + + @Override + public void onChange(Uri uri) { + if (mPreference == null) { + return; + } + if (uri.equals(OneHandedSettingsUtils.ONE_HANDED_MODE_ENABLED_URI)) { + refreshSummary(mPreference); + } + } }