Use MainSwitchPreference to replace the button style switches.

Fix: 177967926
Fix: 177968295
Fix: 177967925
Fix: 177968078

Test: Run robotest and apply the widget in Settings and see the ui
Change-Id: Ie854de96e5495fa564fb8a097ed4547bbd2b10c5
This commit is contained in:
Stanley Wang
2021-01-29 01:17:43 +08:00
parent 70864998c4
commit 10b7a7d483
25 changed files with 307 additions and 513 deletions

View File

@@ -17,8 +17,18 @@
package com.android.settings.display;
import android.content.Context;
import android.widget.Switch;
public class AutoBrightnessDetailPreferenceController extends AutoBrightnessPreferenceController {
import androidx.preference.PreferenceScreen;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
/**
* Controller that updates the adaptive brightness.
*/
public class AutoBrightnessDetailPreferenceController extends
AutoBrightnessPreferenceController implements OnMainSwitchChangeListener {
public AutoBrightnessDetailPreferenceController(Context context, String key) {
super(context, key);
@@ -36,4 +46,21 @@ public class AutoBrightnessDetailPreferenceController extends AutoBrightnessPref
public boolean isPublicSlice() {
return true;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
MainSwitchPreference pref = (MainSwitchPreference) screen.findPreference(
getPreferenceKey());
pref.addOnSwitchChangeListener(this);
pref.updateStatus(isChecked());
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != isChecked()) {
setChecked(isChecked);
}
}
}

View File

@@ -16,43 +16,30 @@
package com.android.settings.display;
import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED;
import android.content.Context;
import android.hardware.display.ColorDisplayManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Switch;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
public class NightDisplayActivationPreferenceController extends TogglePreferenceController {
/**
* Controller that updates the night display.
*/
public class NightDisplayActivationPreferenceController extends
TogglePreferenceController implements OnMainSwitchChangeListener {
private final MetricsFeatureProvider mMetricsFeatureProvider;
private ColorDisplayManager mColorDisplayManager;
private NightDisplayTimeFormatter mTimeFormatter;
private LayoutPreference mPreference;
private Button mTurnOffButton;
private Button mTurnOnButton;
private final OnClickListener mListener = new OnClickListener() {
@Override
public void onClick(View v) {
mMetricsFeatureProvider.logClickedPreference(mPreference, getMetricsCategory());
mColorDisplayManager.setNightDisplayActivated(
!mColorDisplayManager.isNightDisplayActivated());
updateStateInternal(true);
}
};
private MainSwitchPreference mPreference;
public NightDisplayActivationPreferenceController(Context context, String key) {
super(context, key);
@@ -64,7 +51,7 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
@Override
public int getAvailabilityStatus() {
return ColorDisplayManager.isNightDisplayAvailable(mContext) ? AVAILABLE
return ColorDisplayManager.isNightDisplayAvailable(mContext) ? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}
@@ -82,16 +69,24 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey());
mTurnOnButton = mPreference.findViewById(R.id.night_display_turn_on_button);
mTurnOnButton.setOnClickListener(mListener);
mTurnOffButton = mPreference.findViewById(R.id.night_display_turn_off_button);
mTurnOffButton.setOnClickListener(mListener);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
mPreference.updateStatus(mColorDisplayManager.isNightDisplayActivated());
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
final boolean activated = mColorDisplayManager.isNightDisplayActivated();
if (isChecked != activated) {
// TODO(b/179017365): Create a controller which extends TogglePreferenceController to
// control the toggle preference.
setChecked(isChecked);
}
}
@Override
public final void updateState(Preference preference) {
updateStateInternal(false);
updateStateInternal();
}
/** FOR SLICES */
@@ -111,46 +106,14 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
return mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager);
}
private void updateStateInternal(boolean selfChanged) {
if (mTurnOnButton == null || mTurnOffButton == null) {
return;
}
private void updateStateInternal() {
final boolean isActivated = mColorDisplayManager.isNightDisplayActivated();
final int autoMode = mColorDisplayManager.getNightDisplayAutoMode();
String buttonText;
if (autoMode == ColorDisplayManager.AUTO_MODE_CUSTOM_TIME) {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_custom
: R.string.night_display_activation_on_custom,
mTimeFormatter.getFormattedTimeString(isActivated
? mColorDisplayManager.getNightDisplayCustomStartTime()
: mColorDisplayManager.getNightDisplayCustomEndTime()));
} else if (autoMode == ColorDisplayManager.AUTO_MODE_TWILIGHT) {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_twilight
: R.string.night_display_activation_on_twilight);
} else {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_manual
: R.string.night_display_activation_on_manual);
}
if (isActivated) {
mTurnOnButton.setVisibility(View.GONE);
mTurnOffButton.setVisibility(View.VISIBLE);
mTurnOffButton.setText(buttonText);
if (selfChanged) {
mTurnOffButton.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
} else {
mTurnOnButton.setVisibility(View.VISIBLE);
mTurnOffButton.setVisibility(View.GONE);
mTurnOnButton.setText(buttonText);
if (selfChanged) {
mTurnOnButton.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
mTimeFormatter.getFormattedTimeString(isActivated
? mColorDisplayManager.getNightDisplayCustomStartTime()
: mColorDisplayManager.getNightDisplayCustomEndTime());
}
}
}

View File

@@ -19,8 +19,7 @@ import android.app.UiModeManager;
import android.content.Context;
import android.content.res.Configuration;
import android.os.PowerManager;
import android.view.View;
import android.widget.Button;
import android.widget.Switch;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -29,22 +28,22 @@ import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
import java.time.LocalTime;
/**
* Controller for activate/deactivate night mode button
*/
public class DarkModeActivationPreferenceController extends BasePreferenceController {
public class DarkModeActivationPreferenceController extends BasePreferenceController implements
OnMainSwitchChangeListener {
private final UiModeManager mUiModeManager;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private PowerManager mPowerManager;
private Button mTurnOffButton;
private Button mTurnOnButton;
private TimeFormatter mFormat;
private LayoutPreference mPreference;
private MainSwitchPreference mPreference;
public DarkModeActivationPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -62,49 +61,9 @@ public class DarkModeActivationPreferenceController extends BasePreferenceContro
@Override
public final void updateState(Preference preference) {
final boolean batterySaver = mPowerManager.isPowerSaveMode();
if (batterySaver) {
mTurnOnButton.setVisibility(View.GONE);
mTurnOffButton.setVisibility(View.GONE);
return;
}
final boolean active = (mContext.getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_YES) != 0;
updateNightMode(active);
}
private void updateNightMode(boolean active) {
final int mode = mUiModeManager.getNightMode();
String buttonText;
if (mode == UiModeManager.MODE_NIGHT_AUTO) {
buttonText = mContext.getString(active
? R.string.dark_ui_activation_off_auto
: R.string.dark_ui_activation_on_auto);
} else if (mode == UiModeManager.MODE_NIGHT_CUSTOM) {
final LocalTime time = active
? mUiModeManager.getCustomNightModeStart()
: mUiModeManager.getCustomNightModeEnd();
final String timeStr = mFormat.of(time);
buttonText = mContext.getString(active
? R.string.dark_ui_activation_off_custom
: R.string.dark_ui_activation_on_custom, timeStr);
} else {
buttonText = mContext.getString(active
? R.string.dark_ui_activation_off_manual
: R.string.dark_ui_activation_on_manual);
}
if (active) {
mTurnOnButton.setVisibility(View.GONE);
mTurnOffButton.setVisibility(View.VISIBLE);
mTurnOffButton.setText(buttonText);
} else {
mTurnOnButton.setVisibility(View.VISIBLE);
mTurnOffButton.setVisibility(View.GONE);
mTurnOnButton.setText(buttonText);
}
mPreference.updateStatus(active);
}
@Override
@@ -132,26 +91,19 @@ public class DarkModeActivationPreferenceController extends BasePreferenceContro
}
}
private final View.OnClickListener mListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mMetricsFeatureProvider.logClickedPreference(mPreference, getMetricsCategory());
final boolean active = (mContext.getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_YES) != 0;
mUiModeManager.setNightModeActivated(!active);
updateNightMode(!active);
}
};
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
mMetricsFeatureProvider.logClickedPreference(mPreference, getMetricsCategory());
final boolean active = (mContext.getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_YES) != 0;
mUiModeManager.setNightModeActivated(!active);
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey());
mTurnOnButton = mPreference.findViewById(R.id.dark_ui_turn_on_button);
mTurnOnButton.setOnClickListener(mListener);
mTurnOffButton = mPreference.findViewById(R.id.dark_ui_turn_off_button);
mTurnOffButton.setOnClickListener(mListener);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
}
@Override

View File

@@ -20,22 +20,27 @@ package com.android.settings.fuelgauge;
import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;
import android.widget.Switch;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
/**
* Controller to change and update the smart battery toggle
*/
public class SmartBatteryPreferenceController extends BasePreferenceController implements
Preference.OnPreferenceChangeListener {
OnMainSwitchChangeListener {
private static final String KEY_SMART_BATTERY = "smart_battery";
private static final int ON = 1;
private static final int OFF = 0;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
private MainSwitchPreference mPreference;
public SmartBatteryPreferenceController(Context context) {
super(context, KEY_SMART_BATTERY);
@@ -65,14 +70,19 @@ public class SmartBatteryPreferenceController extends BasePreferenceController i
super.updateState(preference);
final boolean smartBatteryOn = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON) == ON;
((SwitchPreference) preference).setChecked(smartBatteryOn);
((MainSwitchPreference) preference).updateStatus(smartBatteryOn);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean smartBatteryOn = (Boolean) newValue;
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, smartBatteryOn ? ON : OFF);
return true;
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, isChecked ? ON : OFF);
}
}

View File

@@ -21,16 +21,17 @@ import android.nfc.NfcAdapter;
import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
import androidx.preference.SwitchPreference;
import com.android.settingslib.widget.MainSwitchPreference;
/**
* NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It turns on/off Nfc
* and ensures the summary of the preference reflects the current state.
*/
public class NfcEnabler extends BaseNfcEnabler {
private final SwitchPreference mPreference;
private final MainSwitchPreference mPreference;
public NfcEnabler(Context context, SwitchPreference preference) {
public NfcEnabler(Context context, MainSwitchPreference preference) {
super(context);
mPreference = preference;
}
@@ -39,19 +40,19 @@ public class NfcEnabler extends BaseNfcEnabler {
protected void handleNfcStateChanged(int newState) {
switch (newState) {
case NfcAdapter.STATE_OFF:
mPreference.setChecked(false);
mPreference.updateStatus(false);
mPreference.setEnabled(isToggleable());
break;
case NfcAdapter.STATE_ON:
mPreference.setChecked(true);
mPreference.updateStatus(true);
mPreference.setEnabled(true);
break;
case NfcAdapter.STATE_TURNING_ON:
mPreference.setChecked(true);
mPreference.updateStatus(true);
mPreference.setEnabled(false);
break;
case NfcAdapter.STATE_TURNING_OFF:
mPreference.setChecked(false);
mPreference.updateStatus(false);
mPreference.setEnabled(false);
break;
}

View File

@@ -23,24 +23,27 @@ import android.net.Uri;
import android.nfc.NfcAdapter;
import android.provider.Settings;
import android.util.Log;
import android.widget.Switch;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
import java.io.IOException;
public class NfcPreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnResume, OnPause {
implements LifecycleObserver, OnResume, OnPause, OnMainSwitchChangeListener {
public static final String KEY_TOGGLE_NFC = "toggle_nfc";
private final NfcAdapter mNfcAdapter;
private NfcEnabler mNfcEnabler;
private MainSwitchPreference mPreference;
public NfcPreferenceController(Context context, String key) {
super(context, key);
@@ -55,10 +58,16 @@ public class NfcPreferenceController extends TogglePreferenceController
return;
}
final SwitchPreference switchPreference = screen.findPreference(getPreferenceKey());
mNfcEnabler = new NfcEnabler(mContext, switchPreference);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
mNfcEnabler = new NfcEnabler(mContext, mPreference);
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != mNfcAdapter.isEnabled()) {
setChecked(isChecked);
}
}
@Override
@@ -129,12 +138,12 @@ public class NfcPreferenceController extends TogglePreferenceController
* Listener for background changes to NFC.
*
* <p>
* Listen to broadcasts from {@link NfcAdapter}. The worker will call notify changed on the
* NFC Slice only when the following extras are present in the broadcast:
* <ul>
* <li>{@link NfcAdapter#STATE_ON}</li>
* <li>{@link NfcAdapter#STATE_OFF}</li>
* </ul>
* Listen to broadcasts from {@link NfcAdapter}. The worker will call notify changed on the
* NFC Slice only when the following extras are present in the broadcast:
* <ul>
* <li>{@link NfcAdapter#STATE_ON}</li>
* <li>{@link NfcAdapter#STATE_OFF}</li>
* </ul>
*/
public static class NfcSliceWorker extends SliceBackgroundWorker<Void> {
@@ -185,7 +194,7 @@ public class NfcPreferenceController extends TogglePreferenceController
NO_EXTRA);
// Do nothing if state change is empty, or an intermediate step.
if ( (nfcStateExtra == NO_EXTRA)
if ((nfcStateExtra == NO_EXTRA)
|| (nfcStateExtra == NfcAdapter.STATE_TURNING_ON)
|| (nfcStateExtra == NfcAdapter.STATE_TURNING_OFF)) {
Log.d(TAG, "Transitional update, dropping broadcast");

View File

@@ -72,16 +72,16 @@ public class BlockPreferenceController extends NotificationPreferenceController
bar.setDisabledByAdmin(mAdmin);
if (mChannel != null && !isChannelBlockable()) {
bar.setEnabled(false);
bar.setSwitchBarEnabled(false);
}
if (mChannelGroup != null && !isChannelGroupBlockable()) {
bar.setEnabled(false);
bar.setSwitchBarEnabled(false);
}
if (mChannel == null && mAppRow.systemApp
&& (!mAppRow.banned || mAppRow.lockedImportance)) {
bar.setEnabled(false);
bar.setSwitchBarEnabled(false);
}
if (mChannel != null) {

View File

@@ -16,37 +16,33 @@
package com.android.settings.notification.zen;
import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.provider.Settings;
import android.view.View;
import android.widget.Button;
import android.widget.Switch;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.notification.SettingsEnableZenModeDialog;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
public class ZenModeButtonPreferenceController extends AbstractZenModePreferenceController
implements PreferenceControllerMixin {
implements PreferenceControllerMixin, OnMainSwitchChangeListener {
private static final String TAG = "EnableZenModeButton";
public static final String KEY = "zen_mode_toggle";
private static final String TAG = "EnableZenModeButton";
private final FragmentManager mFragment;
// DND can also be toggled from QS. If DND wasn't toggled by this preference, don't
// reroute focus.
private boolean mRefocusButton = false;
private Button mZenButtonOn;
private Button mZenButtonOff;
// DND can also be toggled from QS.
private MainSwitchPreference mPreference;
public ZenModeButtonPreferenceController(Context context, Lifecycle lifecycle, FragmentManager
fragment) {
@@ -64,26 +60,27 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
return KEY;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked) {
updateZenModeState(mPreference);
} else {
writeMetrics(mPreference, false);
mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF);
}
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (null == mZenButtonOn) {
mZenButtonOn = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_on_button);
updateZenButtonOnClickListener(preference);
}
if (null == mZenButtonOff) {
mZenButtonOff = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_off_button);
mZenButtonOff.setOnClickListener(v -> {
mRefocusButton = true;
writeMetrics(preference, false);
mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF);
});
}
updatePreference(preference);
}
@@ -92,41 +89,27 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
case Settings.Global.ZEN_MODE_ALARMS:
case Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS:
case Settings.Global.ZEN_MODE_NO_INTERRUPTIONS:
mZenButtonOff.setVisibility(View.VISIBLE);
mZenButtonOn.setVisibility(View.GONE);
if (mRefocusButton) {
mRefocusButton = false;
mZenButtonOff.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
mPreference.updateStatus(true);
break;
case Settings.Global.ZEN_MODE_OFF:
default:
mZenButtonOff.setVisibility(View.GONE);
updateZenButtonOnClickListener(preference);
mZenButtonOn.setVisibility(View.VISIBLE);
if (mRefocusButton) {
mRefocusButton = false;
mZenButtonOn.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
mPreference.updateStatus(false);
}
}
private void updateZenButtonOnClickListener(Preference preference) {
mZenButtonOn.setOnClickListener(v -> {
mRefocusButton = true;
writeMetrics(preference, true);
int zenDuration = getZenDuration();
switch (zenDuration) {
case Settings.Secure.ZEN_DURATION_PROMPT:
new SettingsEnableZenModeDialog().show(mFragment, TAG);
break;
case Settings.Secure.ZEN_DURATION_FOREVER:
mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
break;
default:
mBackend.setZenModeForDuration(zenDuration);
}
});
private void updateZenModeState(Preference preference) {
writeMetrics(preference, true);
int zenDuration = getZenDuration();
switch (zenDuration) {
case Settings.Secure.ZEN_DURATION_PROMPT:
new SettingsEnableZenModeDialog().show(mFragment, TAG);
break;
case Settings.Secure.ZEN_DURATION_FOREVER:
mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
break;
default:
mBackend.setZenModeForDuration(zenDuration);
}
}
private void writeMetrics(Preference preference, boolean buttonOn) {
@@ -135,4 +118,4 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON,
buttonOn);
}
}
}

View File

@@ -17,8 +17,11 @@
package com.android.settings.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.PreferenceViewHolder;
import androidx.preference.TwoStatePreference;
@@ -47,23 +50,23 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
public SettingsMainSwitchPreference(Context context) {
super(context);
init();
init(context, null);
}
public SettingsMainSwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
init();
init(context, attrs);
}
public SettingsMainSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
init(context, attrs);
}
public SettingsMainSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
init(context, attrs);
}
@Override
@@ -79,8 +82,21 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
registerListenerToSwitchBar();
}
private void init() {
private void init(Context context, AttributeSet attrs) {
setLayoutResource(R.layout.preference_widget_main_switch);
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs,
androidx.preference.R.styleable.Preference, 0/*defStyleAttr*/,
0/*defStyleRes*/);
final CharSequence title = TypedArrayUtils.getText(a,
androidx.preference.R.styleable.Preference_title,
androidx.preference.R.styleable.Preference_android_title);
if (!TextUtils.isEmpty(title)) {
setTitle(title.toString());
}
a.recycle();
}
}
/**
@@ -153,7 +169,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference {
/**
* Enable or disable the text and switch.
*/
public void setEnabled(boolean enabled) {
public void setSwitchBarEnabled(boolean enabled) {
if (mMainSwitchBar != null) {
mMainSwitchBar.setEnabled(enabled);
}