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
diff --git a/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java b/src/com/android/settings/gestures/OneHandedEnablePreferenceController.java
index 29004c8..6aac772 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 @@
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);
+ }
+ }
}