Merge "Log source with visibility change"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 852e81d..71ef973 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5585,10 +5585,8 @@
<string name="user_remove_user_menu">Delete <xliff:g id="user_name">%1$s</xliff:g> from this device</string>
<!-- User lock screen settings header[CHAR LIMIT=40] -->
<string name="user_lockscreen_settings">Lock screen settings</string>
- <!-- User settings item to allow creating new users from locks creen [CHAR LIMIT=40] -->
- <string name="user_add_on_lockscreen_menu">Add users</string>
- <!-- User settings user_add_on_lockscreen_menu item summary [CHAR LIMIT=40] -->
- <string name="user_add_on_lockscreen_menu_summary">when device is locked</string>
+ <!-- User settings item to allow creating new users from locks screen [CHAR LIMIT=50] -->
+ <string name="user_add_on_lockscreen_menu">Add users from lock screen</string>
<!-- User details new user name [CHAR LIMIT=30] -->
<string name="user_new_user_name">New user</string>
<!-- User details new restricted profile name [CHAR LIMIT=30] -->
@@ -6168,7 +6166,7 @@
<string name="boot_sounds_title">Power on sounds</string>
<!-- Sound: Title for the Do not Disturb option and associated settings page. [CHAR LIMIT=30] -->
- <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>
diff --git a/res/xml/user_and_accounts_settings.xml b/res/xml/user_and_accounts_settings.xml
index 9bb39f6..bc3ac6c 100644
--- a/res/xml/user_and_accounts_settings.xml
+++ b/res/xml/user_and_accounts_settings.xml
@@ -49,8 +49,6 @@
<com.android.settingslib.RestrictedSwitchPreference
android:key="add_users_when_locked"
android:title="@string/user_add_on_lockscreen_menu"
- android:summary="@string/user_add_on_lockscreen_menu_summary"
- settings:useAdditionalSummary="true"
android:order="105"/>
<PreferenceCategory
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index 1375ed4..45d0b90 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -33,9 +33,7 @@
android:title="@string/user_lockscreen_settings">
<com.android.settingslib.RestrictedSwitchPreference
android:key="add_users_when_locked"
- android:title="@string/user_add_on_lockscreen_menu"
- android:summary="@string/user_add_on_lockscreen_menu_summary"
- settings:useAdditionalSummary="true" />
+ android:title="@string/user_add_on_lockscreen_menu" />
</PreferenceCategory>
<Preference
android:key="emergency_info"
diff --git a/src/com/android/settings/notification/ZenModePreferenceController.java b/src/com/android/settings/notification/ZenModePreferenceController.java
index 61bbe9a..1427d5a 100644
--- a/src/com/android/settings/notification/ZenModePreferenceController.java
+++ b/src/com/android/settings/notification/ZenModePreferenceController.java
@@ -16,14 +16,22 @@
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
@@ -36,4 +44,12 @@
return true;
}
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ if (preference.isEnabled()) {
+ preference.setSummary(mSummaryPrefix + mSummaryBuilder.getPrioritySettingSummary(
+ NotificationManager.from(mContext).getNotificationPolicy()));
+ }
+ }
}
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index 1d5f09e..6266af9 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -34,6 +34,7 @@
private Preference mPrioritySettings;
private Preference mVisualSettings;
private Policy mPolicy;
+ private SummaryBuilder mSummaryBuilder;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -45,6 +46,7 @@
mPrioritySettings = root.findPreference(KEY_PRIORITY_SETTINGS);
mVisualSettings = root.findPreference(KEY_VISUAL_SETTINGS);
mPolicy = NotificationManager.from(mContext).getNotificationPolicy();
+ mSummaryBuilder = new SummaryBuilder(getContext());
}
@Override
@@ -77,62 +79,80 @@
}
private void updatePrioritySettingsSummary() {
- String s = getResources().getString(R.string.zen_mode_alarms);
- s = append(s, isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_REMINDERS),
- R.string.zen_mode_reminders);
- s = append(s, isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_EVENTS),
- R.string.zen_mode_events);
- if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_MESSAGES)) {
- if (mPolicy.priorityMessageSenders == Policy.PRIORITY_SENDERS_ANY) {
- s = append(s, true, R.string.zen_mode_all_messages);
- } else {
- s = append(s, true, R.string.zen_mode_selected_messages);
- }
- }
- if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_CALLS)) {
- if (mPolicy.priorityCallSenders == Policy.PRIORITY_SENDERS_ANY) {
- s = append(s, true, R.string.zen_mode_all_callers);
- } else {
- s = append(s, true, R.string.zen_mode_selected_callers);
- }
- } else if (isCategoryEnabled(mPolicy, Policy.PRIORITY_CATEGORY_REPEAT_CALLERS)) {
- s = append(s, true, R.string.zen_mode_repeat_callers);
- }
- mPrioritySettings.setSummary(s);
+ mPrioritySettings.setSummary(mSummaryBuilder.getPrioritySettingSummary(mPolicy));
}
private void updateVisualSettingsSummary() {
- String s = getString(R.string.zen_mode_all_visual_interruptions);
- if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_ON)
- && isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) {
- s = getString(R.string.zen_mode_no_visual_interruptions);
- } else if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_ON)) {
- s = getString(R.string.zen_mode_screen_on_visual_interruptions);
- } else if (isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) {
- s = getString(R.string.zen_mode_screen_off_visual_interruptions);
- }
- mVisualSettings.setSummary(s);
- }
-
- private boolean isEffectSuppressed(int effect) {
- return (mPolicy.suppressedVisualEffects & effect) != 0;
- }
-
- private boolean isCategoryEnabled(Policy policy, int categoryType) {
- return (policy.priorityCategories & categoryType) != 0;
- }
-
- @VisibleForTesting
- String append(String s, boolean condition, int resId) {
- if (condition) {
- final Context context = getContext();
- return context.getString(R.string.join_many_items_middle, s, context.getString(resId));
- }
- return s;
+ mVisualSettings.setSummary(mSummaryBuilder.getVisualSettingSummary(mPolicy));
}
@Override
protected int getHelpResource() {
return R.string.help_uri_interruptions;
}
+
+ public static class SummaryBuilder {
+
+ private Context mContext;
+
+ public SummaryBuilder(Context context) {
+ mContext = context;
+ }
+
+ String getPrioritySettingSummary(Policy policy) {
+ String s = mContext.getString(R.string.zen_mode_alarms);
+ s = append(s, isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_REMINDERS),
+ R.string.zen_mode_reminders);
+ s = append(s, isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_EVENTS),
+ R.string.zen_mode_events);
+ if (isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_MESSAGES)) {
+ if (policy.priorityMessageSenders == Policy.PRIORITY_SENDERS_ANY) {
+ s = append(s, true, R.string.zen_mode_all_messages);
+ } else {
+ s = append(s, true, R.string.zen_mode_selected_messages);
+ }
+ }
+ if (isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_CALLS)) {
+ if (policy.priorityCallSenders == Policy.PRIORITY_SENDERS_ANY) {
+ s = append(s, true, R.string.zen_mode_all_callers);
+ } else {
+ s = append(s, true, R.string.zen_mode_selected_callers);
+ }
+ } else if (isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_REPEAT_CALLERS)) {
+ s = append(s, true, R.string.zen_mode_repeat_callers);
+ }
+ return s;
+ }
+
+ String getVisualSettingSummary(Policy policy) {
+ String s = mContext.getString(R.string.zen_mode_all_visual_interruptions);
+ if (isEffectSuppressed(policy, Policy.SUPPRESSED_EFFECT_SCREEN_ON)
+ && isEffectSuppressed(policy, Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) {
+ s = mContext.getString(R.string.zen_mode_no_visual_interruptions);
+ } else if (isEffectSuppressed(policy, Policy.SUPPRESSED_EFFECT_SCREEN_ON)) {
+ s = mContext.getString(R.string.zen_mode_screen_on_visual_interruptions);
+ } else if (isEffectSuppressed(policy, Policy.SUPPRESSED_EFFECT_SCREEN_OFF)) {
+ s = mContext.getString(R.string.zen_mode_screen_off_visual_interruptions);
+ }
+ return s;
+ }
+
+ @VisibleForTesting
+ String append(String s, boolean condition, int resId) {
+ if (condition) {
+ return mContext.getString(
+ R.string.join_many_items_middle, s, mContext.getString(resId));
+ }
+ return s;
+ }
+
+ private boolean isCategoryEnabled(Policy policy, int categoryType) {
+ return (policy.priorityCategories & categoryType) != 0;
+ }
+
+ private boolean isEffectSuppressed(Policy policy, int effect) {
+ return (policy.suppressedVisualEffects & effect) != 0;
+ }
+
+ }
}
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java
index 155e6ea..a31fb5e 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModePreferenceControllerTest.java
@@ -16,7 +16,10 @@
package com.android.settings.notification;
+import android.app.NotificationManager;
+import android.app.NotificationManager.Policy;
import android.content.Context;
+import android.support.v7.preference.Preference;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
@@ -27,8 +30,13 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -36,6 +44,12 @@
@Mock
private Context mContext;
+ @Mock
+ private Preference mPreference;
+ @Mock
+ private NotificationManager mNotificationManager;
+ @Mock
+ private Policy mPolicy;
private ZenModePreferenceController mController;
@@ -43,6 +57,9 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mController = new ZenModePreferenceController(mContext);
+ when(mContext.getSystemService(Context.NOTIFICATION_SERVICE))
+ .thenReturn(mNotificationManager);
+ when(mNotificationManager.getNotificationPolicy()).thenReturn(mPolicy);
}
@Test
@@ -50,4 +67,22 @@
assertThat(mController.isAvailable()).isTrue();
}
+ @Test
+ public void updateState_preferenceEnabled_shouldSetSummary() {
+ when(mPreference.isEnabled()).thenReturn(true);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setSummary(anyString());
+ }
+
+ @Test
+ public void updateState_preferenceDisabled_shouldNotSetSummary() {
+ when(mPreference.isEnabled()).thenReturn(false);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference, never()).setSummary(anyString());
+ }
+
}
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
index 40cfed5..7a3742d 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
@@ -36,21 +36,20 @@
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class ZenModeSettingsTest {
- private ZenModeSettings mSettings;
+ private ZenModeSettings.SummaryBuilder mBuilder;
private Context mContext;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application.getApplicationContext();
- mSettings = spy(ZenModeSettings.class);
- doReturn(mContext).when(mSettings).getContext();
+ mBuilder = new ZenModeSettings.SummaryBuilder(mContext);
}
@Test
public void testAppend_conditionFalse_shouldNotAppend() {
String original = "test";
- final String result = mSettings.append(original, false, R.string.zen_mode_alarms);
+ final String result = mBuilder.append(original, false, R.string.zen_mode_alarms);
assertThat(result).isEqualTo(original);
}
@@ -60,7 +59,7 @@
String original = "test";
String alarm = mContext.getString(R.string.zen_mode_alarms);
- final String result = mSettings.append(original, true, R.string.zen_mode_alarms);
+ final String result = mBuilder.append(original, true, R.string.zen_mode_alarms);
assertThat(result).contains(alarm);
}