From 57098f458935dddfdeedd418c7c610f59bdfa01c Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Tue, 5 Jan 2021 16:09:37 +0800 Subject: [PATCH] Use SettingsLib's MainSwitchPreference to replace the Switches which use LayoutPreference. Bug: 175181773 Test: Run robotest and apply the widget in Settings and see the ui Change-Id: I4588d1fc3004970b174e7c5c5d1aa7745f774985 --- res/layout/emergency_gesture_switch_bar.xml | 39 ------------------- res/values/strings.xml | 4 ++ res/xml/app_notification_settings.xml | 5 +-- res/xml/emergency_gesture_settings.xml | 12 +++--- res/xml/prevent_ringing_gesture_settings.xml | 7 ++-- res/xml/zen_mode_event_rule_settings.xml | 7 ++-- res/xml/zen_mode_schedule_rule_settings.xml | 7 ++-- .../EmergencyGesturePreferenceController.java | 19 +++++---- ...ventRingingSwitchPreferenceController.java | 21 +++++----- ...tomaticRuleSwitchPreferenceController.java | 18 ++++----- ...RingingSwitchPreferenceControllerTest.java | 17 ++++---- 11 files changed, 57 insertions(+), 99 deletions(-) delete mode 100644 res/layout/emergency_gesture_switch_bar.xml diff --git a/res/layout/emergency_gesture_switch_bar.xml b/res/layout/emergency_gesture_switch_bar.xml deleted file mode 100644 index 25246010645..00000000000 --- a/res/layout/emergency_gesture_switch_bar.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 3a7cf8e4444..41ed82d15c7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12581,4 +12581,8 @@ Others General + + + Use prevent ringing + diff --git a/res/xml/app_notification_settings.xml b/res/xml/app_notification_settings.xml index b3a11173821..877b38b8445 100644 --- a/res/xml/app_notification_settings.xml +++ b/res/xml/app_notification_settings.xml @@ -22,9 +22,8 @@ android:key="pref_app_header" android:layout="@layout/settings_entity_header" /> - + diff --git a/res/xml/emergency_gesture_settings.xml b/res/xml/emergency_gesture_settings.xml index 2e1a2597c07..2f53a906994 100644 --- a/res/xml/emergency_gesture_settings.xml +++ b/res/xml/emergency_gesture_settings.xml @@ -20,16 +20,18 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:title="@string/emergency_gesture_screen_title"> + + - + + + - - diff --git a/res/xml/zen_mode_event_rule_settings.xml b/res/xml/zen_mode_event_rule_settings.xml index 46b95e138a8..d6a0e684f14 100644 --- a/res/xml/zen_mode_event_rule_settings.xml +++ b/res/xml/zen_mode_event_rule_settings.xml @@ -27,13 +27,12 @@ android:selectable="false" settings:allowDividerBelow="true" /> + + - - + + - - { int preventRinging = Settings.Secure.getInt(mContext.getContentResolver(), @@ -66,18 +66,17 @@ public class PreventRingingSwitchPreferenceController extends AbstractPreference : Settings.Secure.VOLUME_HUSH_VIBRATE); return true; }); - mSwitch = pref.findViewById(R.id.switch_bar); - if (mSwitch != null) { - mSwitch.addOnSwitchChangeListener(this); - mSwitch.show(); - } + mSwitch = (MainSwitchPreference) pref; + mSwitch.setTitle(mContext.getString(R.string.prevent_ringing_main_switch_title)); + mSwitch.addOnSwitchChangeListener(this); + updateState(mSwitch); } } } public void setChecked(boolean isChecked) { if (mSwitch != null) { - mSwitch.setChecked(isChecked); + mSwitch.updateStatus(isChecked); } } diff --git a/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java b/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java index cafb0d10bc7..703ffae49a4 100644 --- a/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java +++ b/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java @@ -25,18 +25,18 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.widget.SwitchBar; 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 ZenAutomaticRuleSwitchPreferenceController extends AbstractZenModeAutomaticRulePreferenceController implements - SwitchBar.OnSwitchChangeListener { + OnMainSwitchChangeListener { private static final String KEY = "zen_automatic_rule_switch"; private AutomaticZenRule mRule; private String mId; - private SwitchBar mSwitchBar; + private MainSwitchPreference mSwitchBar; public ZenAutomaticRuleSwitchPreferenceController(Context context, Fragment parent, Lifecycle lifecycle) { @@ -56,12 +56,11 @@ public class ZenAutomaticRuleSwitchPreferenceController extends @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - LayoutPreference pref = screen.findPreference(KEY); - mSwitchBar = pref.findViewById(R.id.switch_bar); + final Preference pref = screen.findPreference(KEY); + mSwitchBar = (MainSwitchPreference) pref; if (mSwitchBar != null) { - mSwitchBar.setSwitchBarText(R.string.zen_mode_use_automatic_rule, - R.string.zen_mode_use_automatic_rule); + mSwitchBar.setTitle(mContext.getString(R.string.zen_mode_use_automatic_rule)); try { pref.setOnPreferenceClickListener(preference -> { mRule.setEnabled(!mRule.isEnabled()); @@ -72,7 +71,6 @@ public class ZenAutomaticRuleSwitchPreferenceController extends } catch (IllegalStateException e) { // an exception is thrown if you try to add the listener twice } - mSwitchBar.show(); } } @@ -83,7 +81,7 @@ public class ZenAutomaticRuleSwitchPreferenceController extends public void updateState(Preference preference) { if (mRule != null) { - mSwitchBar.setChecked(mRule.isEnabled()); + mSwitchBar.updateStatus(mRule.isEnabled()); } } diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java index ccb2bf6a2b4..5f25759ba93 100644 --- a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java @@ -36,8 +36,7 @@ import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import com.android.settings.widget.SwitchBar; -import com.android.settingslib.widget.LayoutPreference; +import com.android.settingslib.widget.MainSwitchPreference; import org.junit.Before; import org.junit.Test; @@ -63,7 +62,7 @@ public class PreventRingingSwitchPreferenceControllerTest { when(mResources.getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled)) .thenReturn(true); mController = new PreventRingingSwitchPreferenceController(mContext); - mController.mSwitch = mock(SwitchBar.class); + mController.mSwitch = mock(MainSwitchPreference.class); } @Test @@ -89,7 +88,7 @@ public class PreventRingingSwitchPreferenceControllerTest { mController.updateState(mPreference); - verify(mController.mSwitch, times(1)).setChecked(false); + verify(mController.mSwitch, times(1)).updateStatus(false); } @Test @@ -99,7 +98,7 @@ public class PreventRingingSwitchPreferenceControllerTest { mController.updateState(mPreference); - verify(mController.mSwitch, times(1)).setChecked(true); + verify(mController.mSwitch, times(1)).updateStatus(true); } @Test @@ -109,7 +108,7 @@ public class PreventRingingSwitchPreferenceControllerTest { mController.updateState(mPreference); - verify(mController.mSwitch, times(1)).setChecked(true); + verify(mController.mSwitch, times(1)).updateStatus(true); } @Test @@ -161,13 +160,13 @@ public class PreventRingingSwitchPreferenceControllerTest { @Test public void testPreferenceClickListenerAttached() { PreferenceScreen preferenceScreen = mock(PreferenceScreen.class); - LayoutPreference mLayoutPreference = mock(LayoutPreference.class); + MainSwitchPreference preference = mock(MainSwitchPreference.class); when(preferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn( - mLayoutPreference); + preference); mController.displayPreference(preferenceScreen); - verify(mLayoutPreference, times(1)) + verify(preference, times(1)) .setOnPreferenceClickListener(any()); } }