Add modes to Settings homepage.
Also moves the modes entrypoints out of the sub-pages it was previously in (notifications and sound settings).
Bug: 353700470
Test: manual by opening the homepage
Flag: android.app.modes_ui
Change-Id: I53124bfed25c43fc2dabaf9c43ce0513bbfc7377
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7b79611..a418dac 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1321,7 +1321,7 @@
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.notification.modes.ZenModesListFragment"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
- android:value="@string/menu_key_notifications"/>
+ android:value="@string/menu_key_priority_modes" />
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
</activity>
diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml
index 27e9639..36fdb81 100755
--- a/res/values/menu_keys.xml
+++ b/res/values/menu_keys.xml
@@ -24,6 +24,7 @@
<string name="menu_key_battery" translatable="false">top_level_battery</string>
<string name="menu_key_storage" translatable="false">top_level_storage</string>
<string name="menu_key_sound" translatable="false">top_level_sound</string>
+ <string name="menu_key_priority_modes" translatable="false">top_level_priority_modes</string>
<string name="menu_key_display" translatable="false">top_level_display</string>
<string name="menu_key_wallpaper" translatable="false">top_level_wallpaper</string>
<string name="menu_key_accessibility" translatable="false">top_level_accessibility</string>
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 1e5b241..b673a083 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -135,15 +135,6 @@
settings:controller="com.android.settings.notification.zen.ZenModePreferenceController"
/>
- <com.android.settingslib.RestrictedPreference
- android:key="modes_notifications"
- android:order="18"
- android:title="@string/zen_modes_list_title"
- settings:useAdminDisabledSummary="true"
- android:fragment="com.android.settings.notification.modes.ZenModesListFragment"
- settings:controller="com.android.settings.notification.modes.ZenModesLinkPreferenceController"
- />
-
<SwitchPreferenceCompat
android:key="lock_screen_show_only_unseen_notifs"
android:order="19"
diff --git a/res/xml/modes_list_settings.xml b/res/xml/modes_list_settings.xml
index 5c67218..e9b059c 100644
--- a/res/xml/modes_list_settings.xml
+++ b/res/xml/modes_list_settings.xml
@@ -18,7 +18,8 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/zen_modes_list_title">
+ android:title="@string/zen_modes_list_title"
+ android:key="modes_list_settings">
<com.android.settingslib.widget.TopIntroPreference
android:title="@string/zen_modes_list_intro" />
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index 393009e..15312c8 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -105,14 +105,6 @@
settings:keywords="@string/keywords_sounds_and_notifications_interruptions"
settings:controller="com.android.settings.notification.zen.ZenModePreferenceController"/>
- <com.android.settingslib.RestrictedPreference
- android:key="modes_notifications"
- android:order="-130"
- android:title="@string/zen_modes_list_title"
- settings:useAdminDisabledSummary="true"
- android:fragment="com.android.settings.notification.modes.ZenModesListFragment"
- settings:controller="com.android.settings.notification.modes.ZenModesLinkPreferenceController"/>
-
<!-- Phone ringtone -->
<com.android.settings.DefaultRingtonePreference
android:key="phone_ringtone"
diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml
index 31c6af3..1ec968a 100644
--- a/res/xml/top_level_settings.xml
+++ b/res/xml/top_level_settings.xml
@@ -68,6 +68,16 @@
android:summary="@string/notification_dashboard_summary"
settings:highlightableMenuKey="@string/menu_key_notifications"/>
+ <com.android.settings.widget.RestrictedHomepagePreference
+ android:fragment="com.android.settings.notification.modes.ZenModesListFragment"
+ android:icon="@*android:drawable/ic_zen_priority_modes"
+ android:key="top_level_priority_modes"
+ android:order="-115"
+ android:title="@string/zen_modes_list_title"
+ settings:useAdminDisabledSummary="true"
+ settings:highlightableMenuKey="@string/menu_key_priority_modes"
+ settings:controller="com.android.settings.notification.modes.ZenModesLinkPreferenceController"/>
+
<com.android.settings.widget.HomepagePreference
android:fragment="com.android.settings.fuelgauge.batteryusage.PowerUsageSummary"
android:icon="@drawable/ic_settings_battery_white"
diff --git a/res/xml/top_level_settings_v2.xml b/res/xml/top_level_settings_v2.xml
index 058b77f..fe98a71 100644
--- a/res/xml/top_level_settings_v2.xml
+++ b/res/xml/top_level_settings_v2.xml
@@ -82,6 +82,16 @@
android:summary="@string/sound_dashboard_summary"
settings:highlightableMenuKey="@string/menu_key_sound"/>
+ <com.android.settings.widget.RestrictedHomepagePreference
+ android:fragment="com.android.settings.notification.modes.ZenModesListFragment"
+ android:icon="@*android:drawable/ic_zen_priority_modes"
+ android:key="top_level_priority_modes"
+ android:order="-35"
+ android:title="@string/zen_modes_list_title"
+ settings:useAdminDisabledSummary="true"
+ settings:highlightableMenuKey="@string/menu_key_priority_modes"
+ settings:controller="com.android.settings.notification.modes.ZenModesLinkPreferenceController"/>
+
<com.android.settings.widget.HomepagePreference
android:fragment="com.android.settings.communal.CommunalDashboardFragment"
android:icon="@drawable/ia_settings_communal"
diff --git a/src/com/android/settings/notification/modes/ZenModesLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModesLinkPreferenceController.java
index aba82c8..48a441a 100644
--- a/src/com/android/settings/notification/modes/ZenModesLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModesLinkPreferenceController.java
@@ -18,6 +18,7 @@
import android.app.Flags;
import android.content.Context;
+import android.util.Log;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -30,6 +31,7 @@
public class ZenModesLinkPreferenceController extends BasePreferenceController
implements LifecycleObserver, OnStart, OnStop {
+ private static final String TAG = "ModesLinkPrefController";
private final ZenModesBackend mBackend;
private final ZenSettingsObserver mSettingObserver;
@@ -71,7 +73,13 @@
@Override
public void updateState(Preference preference) {
- preference.setSummary(mSummaryBuilder.getModesSummary(mBackend.getModes()));
+ try {
+ preference.setSummary(mSummaryBuilder.getModesSummary(mBackend.getModes()));
+ } catch (SecurityException e) {
+ // Standard usage should have the correct permissions to read zen state. But if we don't
+ // for whatever reason, don't crash.
+ Log.w(TAG, "No permission to read mode state");
+ }
}
@Override