Loading res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -6411,7 +6411,7 @@ </plurals> <!-- Sound: Title for the Do not Disturb option and associated settings page. [CHAR LIMIT=50]--> <string name="zen_mode_settings_title">Do Not Disturb</string> <string name="zen_mode_settings_title">Do Not Disturb preferences</string> <!-- Do not disturb: Title for the Priority interruptions option and associated settings page. [CHAR LIMIT=30] --> <string name="zen_mode_priority_settings_title">Priority only allows</string> Loading res/xml/sound_settings.xml +30 −33 Original line number Diff line number Diff line Loading @@ -56,11 +56,8 @@ android:title="@string/zen_mode_settings_title" settings:useAdminDisabledSummary="true" settings:keywords="@string/keywords_sounds_and_notifications_interruptions" android:fragment="com.android.settings.notification.ZenModeSettings" /> <PreferenceCategory android:key="ringtones_preferecence_category" android:title="@string/ringtones_category_preference_title" > android:fragment="com.android.settings.notification.ZenModeSettings" settings:allowDividerAbove="true" /> <!-- Phone ringtone --> <com.android.settings.DefaultRingtonePreference Loading @@ -68,7 +65,8 @@ android:title="@string/ringtone_title" android:dialogTitle="@string/ringtone_title" android:summary="@string/summary_placeholder" android:ringtoneType="ringtone" /> android:ringtoneType="ringtone" settings:allowDividerAbove="true" /> <!-- Default notification ringtone --> <com.android.settings.DefaultRingtonePreference Loading @@ -87,8 +85,6 @@ android:persistent="false" android:ringtoneType="alarm" /> </PreferenceCategory> <!-- Other sounds --> <PreferenceCategory android:key="other_sound_preferecence_category" Loading Loading @@ -144,7 +140,8 @@ <com.android.settingslib.RestrictedPreference android:key="cell_broadcast_settings" android:title="@string/cell_broadcast_settings" settings:useAdminDisabledSummary="true"> settings:useAdminDisabledSummary="true" settings:allowDividerAbove="true" > <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.cellbroadcastreceiver" Loading src/com/android/settings/notification/ZenModePreferenceController.java +1 −6 Original line number Diff line number Diff line Loading @@ -16,22 +16,18 @@ package com.android.settings.notification; import android.app.NotificationManager; import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; public class ZenModePreferenceController extends AdjustVolumeRestrictedPreferenceController { private static final String KEY_ZEN_MODE = "zen_mode"; private String mSummaryPrefix; private ZenModeSettings.SummaryBuilder mSummaryBuilder; public ZenModePreferenceController(Context context) { super(context); mSummaryBuilder = new ZenModeSettings.SummaryBuilder(context); mSummaryPrefix = context.getString(R.string.zen_mode_priority_settings_title) + " "; } @Override Loading @@ -48,8 +44,7 @@ public class ZenModePreferenceController extends AdjustVolumeRestrictedPreferenc public void updateState(Preference preference) { super.updateState(preference); if (preference.isEnabled()) { preference.setSummary(mSummaryPrefix + mSummaryBuilder.getPrioritySettingSummary( NotificationManager.from(mContext).getNotificationPolicy())); preference.setSummary(mSummaryBuilder.getAutomaticRulesSummary()); } } } src/com/android/settings/notification/ZenModeSettings.java +27 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.notification; import android.app.AutomaticZenRule; import android.app.NotificationManager; import android.app.NotificationManager.Policy; import android.content.Context; Loading @@ -26,6 +27,9 @@ import android.support.v7.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class ZenModeSettings extends ZenModeSettingsBase { private static final String KEY_PRIORITY_SETTINGS = "priority_settings"; Loading Loading @@ -137,6 +141,29 @@ public class ZenModeSettings extends ZenModeSettingsBase { return s; } String getAutomaticRulesSummary() { final int count = getEnabledAutomaticRulesCount(); return count == 0 ? mContext.getString(R.string.zen_mode_settings_summary_off) : mContext.getResources().getQuantityString( R.plurals.zen_mode_settings_summary_on, count, count); } @VisibleForTesting int getEnabledAutomaticRulesCount() { int count = 0; final Map<String, AutomaticZenRule> ruleMap = NotificationManager.from(mContext).getAutomaticZenRules(); if (ruleMap != null) { for (Entry<String, AutomaticZenRule> ruleEntry : ruleMap.entrySet()) { final AutomaticZenRule rule = ruleEntry.getValue(); if (rule != null && rule.isEnabled()) { count++; } } } return count; } @VisibleForTesting String append(String s, boolean condition, int resId) { if (condition) { Loading tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java +17 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.NotificationManager.Policy; import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; Loading @@ -30,11 +31,14 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -42,8 +46,6 @@ import static org.mockito.Mockito.when; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ZenModePreferenceControllerTest { @Mock private Context mContext; @Mock private Preference mPreference; @Mock Loading @@ -51,15 +53,21 @@ public class ZenModePreferenceControllerTest { @Mock private Policy mPolicy; private Context mContext; private ZenModePreferenceController mController; private ZenModeSettings.SummaryBuilder mSummaryBuilder; @Before public void setUp() { MockitoAnnotations.initMocks(this); ShadowApplication shadowApplication = ShadowApplication.getInstance(); shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager); mContext = shadowApplication.getApplicationContext(); mController = new ZenModePreferenceController(mContext); when(mContext.getSystemService(Context.NOTIFICATION_SERVICE)) .thenReturn(mNotificationManager); when(mNotificationManager.getNotificationPolicy()).thenReturn(mPolicy); mSummaryBuilder = spy(new ZenModeSettings.SummaryBuilder(mContext)); ReflectionHelpers.setField(mController, "mSummaryBuilder", mSummaryBuilder); doReturn(0).when(mSummaryBuilder).getEnabledAutomaticRulesCount(); } @Test Loading @@ -72,8 +80,12 @@ public class ZenModePreferenceControllerTest { when(mPreference.isEnabled()).thenReturn(true); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.zen_mode_settings_summary_off)); verify(mPreference).setSummary(anyString()); doReturn(1).when(mSummaryBuilder).getEnabledAutomaticRulesCount(); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getResources().getQuantityString( R.plurals.zen_mode_settings_summary_on, 1, 1)); } @Test Loading Loading
res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -6411,7 +6411,7 @@ </plurals> <!-- Sound: Title for the Do not Disturb option and associated settings page. [CHAR LIMIT=50]--> <string name="zen_mode_settings_title">Do Not Disturb</string> <string name="zen_mode_settings_title">Do Not Disturb preferences</string> <!-- Do not disturb: Title for the Priority interruptions option and associated settings page. [CHAR LIMIT=30] --> <string name="zen_mode_priority_settings_title">Priority only allows</string> Loading
res/xml/sound_settings.xml +30 −33 Original line number Diff line number Diff line Loading @@ -56,11 +56,8 @@ android:title="@string/zen_mode_settings_title" settings:useAdminDisabledSummary="true" settings:keywords="@string/keywords_sounds_and_notifications_interruptions" android:fragment="com.android.settings.notification.ZenModeSettings" /> <PreferenceCategory android:key="ringtones_preferecence_category" android:title="@string/ringtones_category_preference_title" > android:fragment="com.android.settings.notification.ZenModeSettings" settings:allowDividerAbove="true" /> <!-- Phone ringtone --> <com.android.settings.DefaultRingtonePreference Loading @@ -68,7 +65,8 @@ android:title="@string/ringtone_title" android:dialogTitle="@string/ringtone_title" android:summary="@string/summary_placeholder" android:ringtoneType="ringtone" /> android:ringtoneType="ringtone" settings:allowDividerAbove="true" /> <!-- Default notification ringtone --> <com.android.settings.DefaultRingtonePreference Loading @@ -87,8 +85,6 @@ android:persistent="false" android:ringtoneType="alarm" /> </PreferenceCategory> <!-- Other sounds --> <PreferenceCategory android:key="other_sound_preferecence_category" Loading Loading @@ -144,7 +140,8 @@ <com.android.settingslib.RestrictedPreference android:key="cell_broadcast_settings" android:title="@string/cell_broadcast_settings" settings:useAdminDisabledSummary="true"> settings:useAdminDisabledSummary="true" settings:allowDividerAbove="true" > <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.cellbroadcastreceiver" Loading
src/com/android/settings/notification/ZenModePreferenceController.java +1 −6 Original line number Diff line number Diff line Loading @@ -16,22 +16,18 @@ package com.android.settings.notification; import android.app.NotificationManager; import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; public class ZenModePreferenceController extends AdjustVolumeRestrictedPreferenceController { private static final String KEY_ZEN_MODE = "zen_mode"; private String mSummaryPrefix; private ZenModeSettings.SummaryBuilder mSummaryBuilder; public ZenModePreferenceController(Context context) { super(context); mSummaryBuilder = new ZenModeSettings.SummaryBuilder(context); mSummaryPrefix = context.getString(R.string.zen_mode_priority_settings_title) + " "; } @Override Loading @@ -48,8 +44,7 @@ public class ZenModePreferenceController extends AdjustVolumeRestrictedPreferenc public void updateState(Preference preference) { super.updateState(preference); if (preference.isEnabled()) { preference.setSummary(mSummaryPrefix + mSummaryBuilder.getPrioritySettingSummary( NotificationManager.from(mContext).getNotificationPolicy())); preference.setSummary(mSummaryBuilder.getAutomaticRulesSummary()); } } }
src/com/android/settings/notification/ZenModeSettings.java +27 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.notification; import android.app.AutomaticZenRule; import android.app.NotificationManager; import android.app.NotificationManager.Policy; import android.content.Context; Loading @@ -26,6 +27,9 @@ import android.support.v7.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class ZenModeSettings extends ZenModeSettingsBase { private static final String KEY_PRIORITY_SETTINGS = "priority_settings"; Loading Loading @@ -137,6 +141,29 @@ public class ZenModeSettings extends ZenModeSettingsBase { return s; } String getAutomaticRulesSummary() { final int count = getEnabledAutomaticRulesCount(); return count == 0 ? mContext.getString(R.string.zen_mode_settings_summary_off) : mContext.getResources().getQuantityString( R.plurals.zen_mode_settings_summary_on, count, count); } @VisibleForTesting int getEnabledAutomaticRulesCount() { int count = 0; final Map<String, AutomaticZenRule> ruleMap = NotificationManager.from(mContext).getAutomaticZenRules(); if (ruleMap != null) { for (Entry<String, AutomaticZenRule> ruleEntry : ruleMap.entrySet()) { final AutomaticZenRule rule = ruleEntry.getValue(); if (rule != null && rule.isEnabled()) { count++; } } } return count; } @VisibleForTesting String append(String s, boolean condition, int resId) { if (condition) { Loading
tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java +17 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.app.NotificationManager.Policy; import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; Loading @@ -30,11 +31,14 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -42,8 +46,6 @@ import static org.mockito.Mockito.when; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ZenModePreferenceControllerTest { @Mock private Context mContext; @Mock private Preference mPreference; @Mock Loading @@ -51,15 +53,21 @@ public class ZenModePreferenceControllerTest { @Mock private Policy mPolicy; private Context mContext; private ZenModePreferenceController mController; private ZenModeSettings.SummaryBuilder mSummaryBuilder; @Before public void setUp() { MockitoAnnotations.initMocks(this); ShadowApplication shadowApplication = ShadowApplication.getInstance(); shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager); mContext = shadowApplication.getApplicationContext(); mController = new ZenModePreferenceController(mContext); when(mContext.getSystemService(Context.NOTIFICATION_SERVICE)) .thenReturn(mNotificationManager); when(mNotificationManager.getNotificationPolicy()).thenReturn(mPolicy); mSummaryBuilder = spy(new ZenModeSettings.SummaryBuilder(mContext)); ReflectionHelpers.setField(mController, "mSummaryBuilder", mSummaryBuilder); doReturn(0).when(mSummaryBuilder).getEnabledAutomaticRulesCount(); } @Test Loading @@ -72,8 +80,12 @@ public class ZenModePreferenceControllerTest { when(mPreference.isEnabled()).thenReturn(true); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getString(R.string.zen_mode_settings_summary_off)); verify(mPreference).setSummary(anyString()); doReturn(1).when(mSummaryBuilder).getEnabledAutomaticRulesCount(); mController.updateState(mPreference); verify(mPreference).setSummary(mContext.getResources().getQuantityString( R.plurals.zen_mode_settings_summary_on, 1, 1)); } @Test Loading