diff --git a/res/values/strings.xml b/res/values/strings.xml
index 311b56f81a3..28e1f05d584 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7955,24 +7955,28 @@
Priority Modes
+
+ Minimize distractions and take control of your attention with modes for sleep, work, driving, and everything in between.
+
- Add a mode
+ Create your own mode
Only get notified by important people and apps
- Select activation type
+ Set a schedule
+
+
+ Schedule based on
- Time
+ Day and time
- Ex. \"9:30 – 5:00 PM\"
+ \"9 AM - 5 PM weekdays\"
- Calendar
-
- Ex. \"Personal calendar\"
+ Calendar events
ON
@@ -7992,6 +7996,15 @@
Custom
+
+ Turn on now
+
+
+ Turn off
+
+
+ Mode not found
+
Limit interruptions
@@ -8029,19 +8042,17 @@
Schedule
- Turn on automatically
+ When to turn on automatically
-
- Add a calendar
-
-
- Use your calendar
-
-
- Schedule
+
+ Event schedule
+
+ Turn on during events for
+
+ Where invite reply is
- Set a schedule
+ Time schedule
Schedule
@@ -8049,9 +8060,6 @@
%1$d hr, %2$d min
-
- Turn on automatically
-
Schedule
@@ -8080,9 +8088,9 @@
Allow visual signals
- Stay focused
+ Notification filters
- Additional actions
+ More settings
@@ -8133,7 +8141,7 @@
}
- Filter interruptions
+ Limit what can notify you
No interruptions are filtered
@@ -9430,7 +9438,7 @@
Edit mode
- Add mode
+ Create a mode
Custom mode
@@ -9441,26 +9449,26 @@
Calendar events
- Sleep schedule
+ Bedtime routine
While driving
- Linked to app
+ App settings
Info and settings in %1$s
Managed by %1$s
-
- Disable Mode
+
+ Disable %1$s?
- If you disable this feature, the mode will no longer work as intended and its settings will be hidden.
+ This mode will never turn on when disabled
Disable
-
- Enable Mode
+
+ Enable %1$s?
- If you enable this feature, the mode will activate automatically according to its schedule.
+ This mode may turn on automatically based on its settings
Enable
diff --git a/res/xml/modes_calls_settings.xml b/res/xml/modes_calls_settings.xml
index f2ba7f13867..b564020cf71 100644
--- a/res/xml/modes_calls_settings.xml
+++ b/res/xml/modes_calls_settings.xml
@@ -24,14 +24,21 @@
+ android:title="@string/zen_mode_calls_header">
+
+
+ android:title="@string/zen_mode_repeat_callers_title" />
+
diff --git a/res/xml/modes_list_settings.xml b/res/xml/modes_list_settings.xml
index 8207af0f7e8..5c672187205 100644
--- a/res/xml/modes_list_settings.xml
+++ b/res/xml/modes_list_settings.xml
@@ -20,11 +20,12 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/zen_modes_list_title">
-
+
-
+
+
+
diff --git a/res/xml/modes_people_settings.xml b/res/xml/modes_people_settings.xml
index d58b2d7e355..af292ad46ff 100644
--- a/res/xml/modes_people_settings.xml
+++ b/res/xml/modes_people_settings.xml
@@ -17,6 +17,7 @@
@@ -34,4 +35,10 @@
android:title="@string/zen_mode_calls_title"
android:icon="@drawable/ic_zen_mode_people_calls" />
+
+
diff --git a/res/xml/modes_set_calendar.xml b/res/xml/modes_set_calendar.xml
index 02eb26e33af..be094f21f39 100644
--- a/res/xml/modes_set_calendar.xml
+++ b/res/xml/modes_set_calendar.xml
@@ -23,20 +23,18 @@
android:title="@string/zen_mode_set_calendar_title">
+ android:key="zen_mode_event_category">
-
diff --git a/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
index 998b596e321..bb9d23cd558 100644
--- a/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
@@ -84,9 +84,9 @@ class ZenModeButtonPreferenceController extends AbstractZenModePreferenceControl
}
});
if (zenMode.isActive()) {
- mZenButton.setText(R.string.zen_mode_button_turn_off);
+ mZenButton.setText(R.string.zen_mode_action_deactivate);
} else {
- mZenButton.setText(R.string.zen_mode_button_turn_on);
+ mZenButton.setText(R.string.zen_mode_action_activate);
}
}
}
diff --git a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
index c63b3a8c10b..ed3a71c78c7 100644
--- a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
+++ b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
@@ -131,7 +131,7 @@ abstract class ZenModeFragmentBase extends ZenModesFragmentBase {
}
private void toastAndFinish() {
- Toast.makeText(mContext, R.string.zen_mode_rule_not_found_text, Toast.LENGTH_SHORT)
+ Toast.makeText(mContext, R.string.zen_mode_not_found_text, Toast.LENGTH_SHORT)
.show();
this.finish();
}
diff --git a/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java b/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java
index 14264b7a844..6202648fcf9 100644
--- a/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java
+++ b/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java
@@ -50,15 +50,16 @@ public class ZenModeScheduleChooserDialog extends InstrumentedDialogFragment {
static final int OPTION_TIME = 0;
static final int OPTION_CALENDAR = 1;
- private record ScheduleOption(@StringRes int nameResId, @StringRes int exampleResId,
- @DrawableRes int iconResId) {}
+ private record ScheduleOption(@StringRes int nameResId,
+ @Nullable @StringRes Integer exampleResId,
+ @DrawableRes int iconResId) { }
private static final ImmutableList SCHEDULE_OPTIONS = ImmutableList.of(
new ScheduleOption(R.string.zen_mode_select_schedule_time,
R.string.zen_mode_select_schedule_time_example,
com.android.internal.R.drawable.ic_zen_mode_type_schedule_time),
new ScheduleOption(R.string.zen_mode_select_schedule_calendar,
- R.string.zen_mode_select_schedule_calendar_example,
+ null,
com.android.internal.R.drawable.ic_zen_mode_type_schedule_calendar));
private OnScheduleOptionListener mOptionListener;
@@ -85,7 +86,7 @@ public class ZenModeScheduleChooserDialog extends InstrumentedDialogFragment {
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
checkState(getContext() != null);
return new AlertDialog.Builder(getContext())
- .setTitle(R.string.zen_mode_choose_rule_type)
+ .setTitle(R.string.zen_mode_select_schedule_title)
.setAdapter(new OptionsAdapter(getContext()),
(dialog, which) -> onScheduleTypeSelected(which))
.setNegativeButton(R.string.cancel, null)
@@ -115,7 +116,12 @@ public class ZenModeScheduleChooserDialog extends InstrumentedDialogFragment {
ScheduleOption option = checkNotNull(getItem(position));
imageView.setImageResource(option.iconResId());
title.setText(option.nameResId());
- subtitle.setText(option.exampleResId());
+ if (option.exampleResId() != null) {
+ subtitle.setVisibility(View.VISIBLE);
+ subtitle.setText(option.exampleResId());
+ } else {
+ subtitle.setVisibility(View.GONE);
+ }
return convertView;
}
diff --git a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
index 3ee6d9443e4..885c4db1fa1 100644
--- a/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceController.java
@@ -53,6 +53,8 @@ class ZenModeTriggerUpdatePreferenceController extends AbstractZenModePreference
private final ConfigurationActivityHelper mConfigurationActivityHelper;
private final ZenServiceListing mServiceListing;
+ private String mModeName;
+
ZenModeTriggerUpdatePreferenceController(Context context, String key,
ZenModesBackend backend) {
this(context, key, backend, context.getPackageManager(),
@@ -82,6 +84,7 @@ class ZenModeTriggerUpdatePreferenceController extends AbstractZenModePreference
return;
}
+ mModeName = zenMode.getName();
PrimarySwitchPreference triggerPref = (PrimarySwitchPreference) preference;
triggerPref.setChecked(zenMode.getRule().isEnabled());
triggerPref.setOnPreferenceChangeListener(mSwitchChangeListener);
@@ -189,15 +192,15 @@ class ZenModeTriggerUpdatePreferenceController extends AbstractZenModePreference
};
private void confirmChangeEnabled(Preference preference, boolean enabled) {
- @StringRes int title = enabled ? R.string.zen_mode_confirm_enable_title
- : R.string.zen_mode_confirm_disable_title;
+ @StringRes int titleFormat = enabled ? R.string.zen_mode_confirm_enable_mode_title
+ : R.string.zen_mode_confirm_disable_mode_title;
@StringRes int message = enabled ? R.string.zen_mode_confirm_enable_message
: R.string.zen_mode_confirm_disable_message;
@StringRes int confirmButton = enabled ? R.string.zen_mode_action_enable
: R.string.zen_mode_action_disable;
new AlertDialog.Builder(mContext)
- .setTitle(title)
+ .setTitle(mContext.getString(titleFormat, mModeName))
.setMessage(message)
.setPositiveButton(confirmButton,
(dialog, which) -> setModeEnabled(enabled))
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
index a3fe57e02f5..80d314c3dc0 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTriggerUpdatePreferenceControllerTest.java
@@ -47,6 +47,7 @@ import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.SystemZenRules;
import android.service.notification.ZenModeConfig;
+import android.widget.TextView;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -174,18 +175,21 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
@Test
public void onPreferenceChange_toggleOn_enablesModeAfterConfirmation() {
// Start with a disabled mode
- ZenMode zenMode = new TestModeBuilder().setEnabled(false).build();
+ ZenMode zenMode = new TestModeBuilder().setName("The mode").setEnabled(false).build();
mController.updateZenMode(mPreference, zenMode);
// Flip the switch
mPreference.callChangeListener(true);
verify(mBackend, never()).updateMode(any());
+ AlertDialog confirmDialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(confirmDialog).isNotNull();
+ assertThat(confirmDialog.isShowing()).isTrue();
+ assertThat(((TextView) confirmDialog.findViewById(com.android.internal.R.id.alertTitle))
+ .getText()).isEqualTo("Enable The mode?");
+
// Oh wait, I forgot to confirm! Let's do that
- assertThat(ShadowAlertDialog.getLatestAlertDialog()).isNotNull();
- assertThat(ShadowAlertDialog.getLatestAlertDialog().isShowing()).isTrue();
- ShadowAlertDialog.getLatestAlertDialog()
- .getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+ confirmDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
shadowOf(Looper.getMainLooper()).idle();
// Verify the backend got asked to update the mode to be enabled
@@ -198,18 +202,21 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
@Test
public void onPreferenceChange_toggleOff_disablesModeAfterConfirmation() {
// Start with an enabled mode
- ZenMode zenMode = new TestModeBuilder().setEnabled(true).build();
+ ZenMode zenMode = new TestModeBuilder().setName("The mode").setEnabled(true).build();
mController.updateZenMode(mPreference, zenMode);
// Flip the switch
mPreference.callChangeListener(false);
verify(mBackend, never()).updateMode(any());
+ AlertDialog confirmDialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(confirmDialog).isNotNull();
+ assertThat(confirmDialog.isShowing()).isTrue();
+ assertThat(((TextView) confirmDialog.findViewById(com.android.internal.R.id.alertTitle))
+ .getText()).isEqualTo("Disable The mode?");
+
// Oh wait, I forgot to confirm! Let's do that
- assertThat(ShadowAlertDialog.getLatestAlertDialog()).isNotNull();
- assertThat(ShadowAlertDialog.getLatestAlertDialog().isShowing()).isTrue();
- ShadowAlertDialog.getLatestAlertDialog()
- .getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+ confirmDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
shadowOf(Looper.getMainLooper()).idle();
// Verify the backend got asked to update the mode to be disabled
@@ -314,7 +321,7 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
mController.updateState(mPreference, mode);
assertThat(mPreference.isVisible()).isTrue();
- assertThat(mPreference.getTitle()).isEqualTo("Linked to app");
+ assertThat(mPreference.getTitle()).isEqualTo("App settings");
assertThat(mPreference.getSummary()).isEqualTo("When The Music's Over");
assertThat(mPreference.getIntent()).isEqualTo(configurationIntent);
}
@@ -331,7 +338,7 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
mController.updateState(mPreference, mode);
assertThat(mPreference.isVisible()).isTrue();
- assertThat(mPreference.getTitle()).isEqualTo("Linked to app");
+ assertThat(mPreference.getTitle()).isEqualTo("App settings");
assertThat(mPreference.getSummary()).isEqualTo("When the saints go marching in");
assertThat(mPreference.getIntent()).isNull();
}
@@ -349,7 +356,7 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
mController.updateState(mPreference, mode);
assertThat(mPreference.isVisible()).isTrue();
- assertThat(mPreference.getTitle()).isEqualTo("Linked to app");
+ assertThat(mPreference.getTitle()).isEqualTo("App settings");
assertThat(mPreference.getSummary()).isEqualTo("Info and settings in The App Name");
}
@@ -365,7 +372,7 @@ public class ZenModeTriggerUpdatePreferenceControllerTest {
mController.updateState(mPreference, mode);
assertThat(mPreference.isVisible()).isTrue();
- assertThat(mPreference.getTitle()).isEqualTo("Linked to app");
+ assertThat(mPreference.getTitle()).isEqualTo("App settings");
assertThat(mPreference.getSummary()).isEqualTo("Managed by The App Name");
}
}