Merge "Synchronize the states of MainSwitchBar and MainSwitchPreference." into sc-dev am: 4f097e3472

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14580808

Change-Id: I99e7f602b2091abe1f9f8f0da6132918dbe56d16
This commit is contained in:
Stanley Wang
2021-05-21 02:08:21 +00:00
committed by Automerger Merge Worker
2 changed files with 12 additions and 5 deletions

View File

@@ -18,6 +18,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.settingslib.widget"> package="com.android.settingslib.widget">
<uses-sdk android:minSdkVersion="21" /> <uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="31"/>
</manifest> </manifest>

View File

@@ -19,6 +19,7 @@ package com.android.settingslib.widget;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.Switch;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
import androidx.preference.TwoStatePreference; import androidx.preference.TwoStatePreference;
@@ -31,7 +32,7 @@ import java.util.List;
* This component is used as the main switch of the page * This component is used as the main switch of the page
* to enable or disable the prefereces on the page. * to enable or disable the prefereces on the page.
*/ */
public class MainSwitchPreference extends TwoStatePreference { public class MainSwitchPreference extends TwoStatePreference implements OnMainSwitchChangeListener {
private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>(); private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>();
@@ -73,7 +74,7 @@ public class MainSwitchPreference extends TwoStatePreference {
private void init(Context context, AttributeSet attrs) { private void init(Context context, AttributeSet attrs) {
setLayoutResource(R.layout.settingslib_main_switch_layout); setLayoutResource(R.layout.settingslib_main_switch_layout);
mSwitchChangeListeners.add(this);
if (attrs != null) { if (attrs != null) {
final TypedArray a = context.obtainStyledAttributes(attrs, final TypedArray a = context.obtainStyledAttributes(attrs,
androidx.preference.R.styleable.Preference, 0 /*defStyleAttr*/, androidx.preference.R.styleable.Preference, 0 /*defStyleAttr*/,
@@ -88,7 +89,7 @@ public class MainSwitchPreference extends TwoStatePreference {
@Override @Override
public void setChecked(boolean checked) { public void setChecked(boolean checked) {
super.setChecked(checked); super.setChecked(checked);
if (mMainSwitchBar != null) { if (mMainSwitchBar != null && mMainSwitchBar.isChecked() != checked) {
mMainSwitchBar.setChecked(checked); mMainSwitchBar.setChecked(checked);
} }
} }
@@ -101,13 +102,17 @@ public class MainSwitchPreference extends TwoStatePreference {
} }
} }
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
super.setChecked(isChecked);
}
/** /**
* Update the switch status of preference * Update the switch status of preference
*/ */
public void updateStatus(boolean checked) { public void updateStatus(boolean checked) {
setChecked(checked); setChecked(checked);
if (mMainSwitchBar != null) { if (mMainSwitchBar != null) {
mMainSwitchBar.setChecked(checked);
mMainSwitchBar.setTitle(mTitle); mMainSwitchBar.setTitle(mTitle);
mMainSwitchBar.show(); mMainSwitchBar.show();
} }