diff --git a/src/com/android/settings/display/SmartAutoRotatePreference.java b/src/com/android/settings/display/SmartAutoRotatePreference.java new file mode 100644 index 00000000000..32b411d71a4 --- /dev/null +++ b/src/com/android/settings/display/SmartAutoRotatePreference.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.display; + +import android.content.Context; +import android.util.AttributeSet; + +import com.android.internal.view.RotationPolicy; +import com.android.settingslib.PrimarySwitchPreference; + +/** + * component for the display settings auto rotate toggle + */ +public class SmartAutoRotatePreference extends PrimarySwitchPreference { + + private RotationPolicy.RotationPolicyListener mRotationPolicyListener; + + public SmartAutoRotatePreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void onAttached() { + super.onAttached(); + if (mRotationPolicyListener == null) { + mRotationPolicyListener = new RotationPolicy.RotationPolicyListener() { + @Override + public void onChange() { + setChecked(!RotationPolicy.isRotationLocked(getContext())); + } + }; + } + RotationPolicy.registerRotationPolicyListener(getContext(), + mRotationPolicyListener); + } + + @Override + public void onDetached() { + super.onDetached(); + if (mRotationPolicyListener != null) { + RotationPolicy.unregisterRotationPolicyListener(getContext(), + mRotationPolicyListener); + } + } +} diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java index 2e77d34cd0c..be47caee177 100644 --- a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java +++ b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java @@ -22,7 +22,6 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE; import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission; import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable; -import android.text.TextUtils; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.Context; @@ -80,16 +79,6 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } - @Override - public boolean isSliceable() { - return TextUtils.equals(getPreferenceKey(), "auto_rotate"); - } - - @Override - public boolean isPublicSlice() { - return true; - } - @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); @@ -111,7 +100,7 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl @Override public void onChange() { if (mPreference != null) { - updateState(mPreference); + refreshSummary(mPreference); } } }; @@ -174,4 +163,4 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl } return mContext.getString(activeStringId); } -} \ No newline at end of file +}