Merge "Zen priority settings update" into oc-dr1-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ec21ff8..100d295 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7166,6 +7166,9 @@
     <!-- [CHAR LIMIT=50] Zen mode settings: Alarms option -->
     <string name="zen_mode_alarms">Alarms</string>
 
+    <!-- [CHAR LIMIT=50] Zen mode settings: Alarms option summary -->
+    <string name="zen_mode_alarms_summary">Alarms are always a priority and make sound</string>
+
     <!-- [CHAR LIMIT=50] Zen mode settings: Reminders option -->
     <string name="zen_mode_reminders">Reminders</string>
 
diff --git a/res/xml/zen_mode_priority_settings.xml b/res/xml/zen_mode_priority_settings.xml
index e2b8f48..e4f8f5e 100644
--- a/res/xml/zen_mode_priority_settings.xml
+++ b/res/xml/zen_mode_priority_settings.xml
@@ -19,13 +19,6 @@
     android:key="zen_mode_priority_settings"
     android:title="@string/zen_mode_priority_settings_title" >
 
-    <!-- Alarms -->
-    <SwitchPreference
-        android:key="alarms"
-        android:title="@string/zen_mode_alarms"
-        android:enabled="false"
-        android:defaultValue="true"/>
-
     <!-- Reminders -->
     <SwitchPreference
         android:key="reminders"
@@ -36,6 +29,14 @@
         android:key="events"
         android:title="@string/zen_mode_events"/>
 
+    <!-- Alarms -->
+    <SwitchPreference
+        android:key="alarms"
+        android:title="@string/zen_mode_alarms"
+        android:summary="@string/zen_mode_alarms_summary"
+        android:enabled="false"
+        android:defaultValue="true"/>
+
     <!-- Messages -->
     <DropDownPreference
         android:key="messages"
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index 5e815f8..59e588d 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -358,10 +358,10 @@
 
         String getPrioritySettingSummary(Policy policy) {
             String s = mContext.getString(R.string.zen_mode_alarms);
-            s = append(s, isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_REMINDERS),
+            s = prepend(s, isCategoryEnabled(policy, Policy.PRIORITY_CATEGORY_EVENTS),
+                    R.string.zen_mode_events);
+            s = prepend(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);
@@ -426,6 +426,15 @@
             return s;
         }
 
+        @VisibleForTesting
+        String prepend(String s, boolean condition, int resId) {
+            if (condition) {
+                return mContext.getString(
+                        R.string.join_many_items_middle, mContext.getString(resId), s);
+            }
+            return s;
+        }
+
         private boolean isCategoryEnabled(Policy policy, int categoryType) {
             return (policy.priorityCategories & categoryType) != 0;
         }
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
index 8ac482b..716e2b2 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.notification;
 
+import android.app.NotificationManager;
 import android.content.Context;
 
 import com.android.settings.R;
@@ -30,6 +31,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static junit.framework.Assert.assertTrue;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ZenModeSettingsTest {
@@ -60,6 +63,38 @@
         final String result = mBuilder.append(original, true, R.string.zen_mode_alarms);
 
         assertThat(result).contains(alarm);
+        assertThat(result).contains(original);
+        assertTrue(result.indexOf(original) < result.indexOf(alarm));
+    }
+
+    @Test
+    public void testPrepend() {
+        String original = mContext.getString(R.string.zen_mode_alarms);
+        String reminders = mContext.getString(R.string.zen_mode_reminders);
+
+        final String result = mBuilder.prepend(original, true, R.string.zen_mode_reminders);
+        assertThat(result).contains(original);
+        assertThat(result).contains(reminders);
+        assertTrue(result.indexOf(reminders) < result.indexOf(original));
+    }
+
+    @Test
+    public void testGetPrioritySettingSummary_sameOrderAsTargetPage() {
+        NotificationManager.Policy policy = new NotificationManager.Policy(
+                NotificationManager.Policy.PRIORITY_CATEGORY_EVENTS
+                        | NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS,
+                0, 0);
+        final String result = mBuilder.getPrioritySettingSummary(policy);
+
+        String alarms = mContext.getString(R.string.zen_mode_alarms);
+        String reminders = mContext.getString(R.string.zen_mode_reminders);
+        String events = mContext.getString(R.string.zen_mode_events);
+
+        assertThat(result).contains(alarms);
+        assertThat(result).contains(reminders);
+        assertThat(result).contains(events);
+        assertTrue(result.indexOf(reminders) < result.indexOf(events) &&
+                result.indexOf(events) < result.indexOf(alarms));
     }
 
 }