From 4763e1f16b6d1968d0226c0efac688eabf28a1ca Mon Sep 17 00:00:00 2001 From: Abel Tesfaye Date: Fri, 4 Jun 2021 17:53:45 +0000 Subject: [PATCH] Fix for Smart auto rotate text summary not updating after QS toggle is modified Test: locally with flame Bug: 190198617 Change-Id: I7f896cd5e9bdd0974775eff01120527602662c5b --- .../SmartAutoRotatePreferenceController.java | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java index 0e2e013c6ea..8c25a05ca31 100644 --- a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java +++ b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java @@ -23,15 +23,23 @@ import android.os.UserHandle; import android.provider.Settings; import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; import com.android.internal.view.RotationPolicy; 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; /** * SmartAutoRotatePreferenceController provides auto rotate summary in display settings */ -public class SmartAutoRotatePreferenceController extends BasePreferenceController { +public class SmartAutoRotatePreferenceController extends BasePreferenceController + implements LifecycleObserver, OnStart, OnStop { + + private RotationPolicy.RotationPolicyListener mRotationPolicyListener; + private Preference mPreference; public SmartAutoRotatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); @@ -43,8 +51,34 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } - protected void update(Preference preference) { - refreshSummary(preference); + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = screen.findPreference(getPreferenceKey()); + } + + @Override + public void onStart() { + if (mRotationPolicyListener == null) { + mRotationPolicyListener = new RotationPolicy.RotationPolicyListener() { + @Override + public void onChange() { + if (mPreference != null) { + refreshSummary(mPreference); + } + } + }; + } + RotationPolicy.registerRotationPolicyListener(mContext, + mRotationPolicyListener); + } + + @Override + public void onStop() { + if (mRotationPolicyListener != null) { + RotationPolicy.unregisterRotationPolicyListener(mContext, + mRotationPolicyListener); + } } @Override