SettingsMainSwitchPreference should display the restricted icon

if it is restricted.

- Use the RestrictedPreferenceHelper to check the restricted state.

Fix: 179245126
Test: rebotest and see the UI
Change-Id: I3c0e3bd0f3596d6fa548b6f8f10e4d12e7e50c9a
This commit is contained in:
Stanley Wang
2021-05-29 20:27:38 +08:00
parent 84084e471c
commit 9b6ead8de7
5 changed files with 90 additions and 12 deletions

View File

@@ -16,10 +16,13 @@
package com.android.settings.widget;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.Switch;
import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.PreferenceViewHolder;
@@ -27,7 +30,7 @@ import androidx.preference.TwoStatePreference;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchBar.OnBeforeCheckedChangeListener;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
import java.util.ArrayList;
@@ -38,7 +41,9 @@ import java.util.List;
* This component is used as the main switch of the page
* to enable or disable the prefereces on the page.
*/
public class SettingsMainSwitchPreference extends TwoStatePreference {
public class SettingsMainSwitchPreference extends TwoStatePreference implements
OnMainSwitchChangeListener {
private final List<OnBeforeCheckedChangeListener> mBeforeCheckedChangeListeners =
new ArrayList<>();
private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>();
@@ -46,8 +51,8 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
private SettingsMainSwitchBar mMainSwitchBar;
private CharSequence mTitle;
private boolean mIsVisible;
private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
private EnforcedAdmin mEnforcedAdmin;
private RestrictedPreferenceHelper mRestrictedHelper;
public SettingsMainSwitchPreference(Context context) {
super(context);
@@ -78,8 +83,8 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
holder.setDividerAllowedBelow(false);
mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar);
mMainSwitchBar.show();
mEnforcedAdmin = mRestrictedHelper.checkRestrictionEnforced();
updateStatus(isChecked());
registerListenerToSwitchBar();
@@ -90,6 +95,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
private void init(Context context, AttributeSet attrs) {
setLayoutResource(R.layout.preference_widget_main_switch);
mSwitchChangeListeners.add(this);
mIsVisible = true;
if (attrs != null) {
@@ -103,6 +109,8 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
setTitle(title.toString());
}
a.recycle();
mRestrictedHelper = new RestrictedPreferenceHelper(context, this, attrs);
}
}
@@ -129,13 +137,17 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
}
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
super.setChecked(isChecked);
}
/**
* Update the switch status of preference
*/
public void updateStatus(boolean checked) {
setChecked(checked);
if (mMainSwitchBar != null) {
mMainSwitchBar.setChecked(checked);
mMainSwitchBar.setTitle(mTitle);
mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
mMainSwitchBar.show();
@@ -230,7 +242,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
* Otherwise, calls setEnabled which will enables the entire view including
* the text and switch.
*/
public void setDisabledByAdmin(RestrictedLockUtils.EnforcedAdmin admin) {
public void setDisabledByAdmin(EnforcedAdmin admin) {
mEnforcedAdmin = admin;
if (mMainSwitchBar != null) {
mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);