Use the new inspirational text in mode interstitials

Also use the OTHER image for calendar/time, instead of UNKNOWN.

Bug: 332730534
Test: manual
Flag: android.app.modes_ui
Change-Id: I85a36d2d409ad3e9f3d5f70f95d90512443971a7
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6c018c2..20e4ce8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -9523,6 +9523,23 @@
     <!-- Priority Modes: Blurb for modes that are not of a specific type (OTHER, UNKNOWN). [CHAR LIMIT=NONE] -->
     <string name="zen_mode_blurb_generic">Minimize interruptions by only allowing important people and apps to reach you</string>
 
+    <!-- Priority Modes: Inspirational text for a mode that activates during a fixed time schedule (e.g. 9:00-17:00). [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_schedule_time">Set a mode that follows a regular schedule</string>
+    <!-- Priority Modes: Inspirational text for a mode that activates during calendar events. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_schedule_calendar">Keep your device in sync with your day’s events</string>
+    <!-- Priority Modes: Inspirational text for a mode of type BEDTIME. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_bedtime">Wake up feeling like 100%</string>
+    <!-- Priority Modes: Inspirational text for a mode of type DRIVING. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_driving">Put safety first while on the road</string>
+    <!-- Priority Modes: Inspirational text for a mode of type IMMERSIVE. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_immersive">Gain focus to get in the zone</string>
+    <!-- Priority Modes: Inspirational text for a mode of type THEATER. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_theater">For moments when courtesy counts</string>
+    <!-- Priority Modes: Inspirational text for a mode of type MANAGED. [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_managed">Guided usage to help you stay in good hands</string>
+    <!-- Priority Modes: Inspirational text for modes that are not of a specific type (OTHER, UNKNOWN). [CHAR LIMIT=NONE] -->
+    <string name="zen_mode_inspiration_generic">Take control of your attention</string>
+
     <!-- Content description for help icon button [CHAR LIMIT=20] -->
     <string name="warning_button_text">Warning</string>
 
diff --git a/src/com/android/settings/notification/modes/SetupInterstitialActivity.java b/src/com/android/settings/notification/modes/SetupInterstitialActivity.java
index f26de76..984fa1c 100644
--- a/src/com/android/settings/notification/modes/SetupInterstitialActivity.java
+++ b/src/com/android/settings/notification/modes/SetupInterstitialActivity.java
@@ -21,9 +21,13 @@
 import static android.app.AutomaticZenRule.TYPE_IMMERSIVE;
 import static android.app.AutomaticZenRule.TYPE_MANAGED;
 import static android.app.AutomaticZenRule.TYPE_OTHER;
+import static android.app.AutomaticZenRule.TYPE_SCHEDULE_CALENDAR;
+import static android.app.AutomaticZenRule.TYPE_SCHEDULE_TIME;
 import static android.app.AutomaticZenRule.TYPE_THEATER;
+import static android.app.AutomaticZenRule.TYPE_UNKNOWN;
 import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
 
+import android.annotation.SuppressLint;
 import android.app.ActionBar;
 import android.content.Context;
 import android.content.Intent;
@@ -38,6 +42,7 @@
 
 import androidx.activity.EdgeToEdge;
 import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.FragmentActivity;
 
@@ -123,6 +128,11 @@
             title.setText(mode.getName());
         }
 
+        TextView subtitle = findViewById(R.id.mode_name_subtitle);
+        if (subtitle != null) {
+            subtitle.setText(getSubtitle(mode));
+        }
+
         ImageView img = findViewById(R.id.image);
         if (img != null) {
             setImage(img, mode);
@@ -134,6 +144,27 @@
         }
     }
 
+    @StringRes
+    @SuppressLint("SwitchIntDef")
+    private static int getSubtitle(ZenMode mode) {
+        if (mode.isSystemOwned()) {
+            return switch (mode.getType()) {
+                case TYPE_SCHEDULE_TIME -> R.string.zen_mode_inspiration_schedule_time;
+                case TYPE_SCHEDULE_CALENDAR -> R.string.zen_mode_inspiration_schedule_calendar;
+                default -> R.string.zen_mode_inspiration_generic; // Custom Manual
+            };
+        } else {
+            return switch (mode.getType()) {
+                case TYPE_BEDTIME -> R.string.zen_mode_inspiration_bedtime;
+                case TYPE_DRIVING -> R.string.zen_mode_inspiration_driving;
+                case TYPE_IMMERSIVE -> R.string.zen_mode_inspiration_immersive;
+                case TYPE_THEATER -> R.string.zen_mode_inspiration_theater;
+                case TYPE_MANAGED -> R.string.zen_mode_inspiration_managed;
+                default -> R.string.zen_mode_inspiration_generic; // Including OTHER, UNKNOWN.
+            };
+        }
+    }
+
     private void setImage(@NonNull ImageView img, @NonNull ZenMode mode) {
         int drawableRes = switch (mode.getType()) {
             case TYPE_BEDTIME -> R.drawable.modes_interstitial_bedtime;
@@ -141,7 +172,9 @@
             case TYPE_IMMERSIVE -> R.drawable.modes_interstitial_immersive;
             case TYPE_THEATER -> R.drawable.modes_interstitial_theater;
             case TYPE_MANAGED -> R.drawable.modes_interstitial_managed;
-            case TYPE_OTHER -> R.drawable.modes_interstitial_other;
+            case TYPE_OTHER, TYPE_SCHEDULE_CALENDAR, TYPE_SCHEDULE_TIME ->
+                    R.drawable.modes_interstitial_other;
+            case TYPE_UNKNOWN -> R.drawable.modes_interstitial_unknown;
             default -> R.drawable.modes_interstitial_unknown;
         };