Let MasterSwitchPreference be restrictable

Let MasterSwitchPreference be restrictable by extending RestrictedPreference.
This is a prerequisite CL for "Hotspot & Tethering" in "Network & Internet" settings screen to be a MasterSwtichPreference.
Also changed MasterSwitchPreferenceTest perse.

Bug: 145922022
Test: SettingsRoboTests except StorageItemPreferenceControllerTest which
fails before this CL.
Change-Id: I54fa59d7adfce5f564c178c0db334974dbabf059
This commit is contained in:
Zhen Zhang
2019-12-09 18:13:51 -08:00
parent dc2058e931
commit 43b882c4e2
3 changed files with 79 additions and 84 deletions

View File

@@ -26,13 +26,13 @@ import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.TwoTargetPreference;
import com.android.settingslib.RestrictedPreference;
/**
* A custom preference that provides inline switch toggle. It has a mandatory field for title, and
* optional fields for icon and sub-text.
* optional fields for icon and sub-text. And it can be restricted by admin state.
*/
public class MasterSwitchPreference extends TwoTargetPreference {
public class MasterSwitchPreference extends RestrictedPreference {
private Switch mSwitch;
private boolean mChecked;
@@ -58,7 +58,7 @@ public class MasterSwitchPreference extends TwoTargetPreference {
@Override
protected int getSecondTargetResId() {
return R.layout.preference_widget_master_switch;
return R.layout.restricted_preference_widget_master_switch;
}
@Override
@@ -66,6 +66,7 @@ public class MasterSwitchPreference extends TwoTargetPreference {
super.onBindViewHolder(holder);
final View switchWidget = holder.findViewById(R.id.switchWidget);
if (switchWidget != null) {
switchWidget.setVisibility(isDisabledByAdmin() ? View.GONE : View.VISIBLE);
switchWidget.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -118,10 +119,16 @@ public class MasterSwitchPreference extends TwoTargetPreference {
* Otherwise, keep it enabled.
*/
public void setDisabledByAdmin(EnforcedAdmin admin) {
super.setDisabledByAdmin(admin);
setSwitchEnabled(admin == null);
}
public Switch getSwitch() {
return mSwitch;
}
@Override
protected boolean shouldHideSecondTarget() {
return getSecondTargetResId() == 0;
}
}