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
This commit is contained in:
Jason Chang
2022-04-26 01:50:43 +08:00
parent 932d5deaff
commit f38cec326a

View File

@@ -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);
}
}
}