Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6835a20 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Support showing notifications as badges.

And remove unneeded app level settings.

Change-Id: I88f506b0704195181d1748a3135f8ee0f39b774f
Test: manual for now. will add tests when have real mocks for the pages
parent dea70354
Loading
Loading
Loading
Loading
+15 −23
Original line number Diff line number Diff line
@@ -6220,25 +6220,19 @@
    <string name="notification_importance_none">Not set</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: blocked importance level description -->
    <string name="notification_importance_blocked">Never show notifications from this app</string>
    <string name="notification_importance_blocked">Never show notifications</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: min importance level description -->
    <string name="notification_importance_min">No full screen interruption, peeking, sound, or vibration. Show at the bottom of the notification list. Hide from lock screen and status bar.</string>
    <string name="notification_importance_min">No sound or visual interruption</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: low importance level description -->
    <string name="notification_importance_low">No full screen interruption, peeking, sound, or vibration.</string>
    <string name="notification_importance_low">Show silently</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: normal importance level description -->
    <string name="notification_importance_default">No full screen interruption or peeking.</string>
    <string name="notification_importance_default">Make sound</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: high importance level description -->
    <string name="notification_importance_high">Always peek. No full screen interruption.</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: max importance level description -->
    <string name="notification_importance_max">Always peek, and allow full screen interruption. Show at the top of the notification list.</string>
    <!-- [CHAR LIMIT=100] Notification Importance slider: max importance level description -->
    <string name="notification_importance_unspecified">App determines importance for each notification</string>
    <string name="notification_importance_high">Make sound and pop on screen</string>
    <!-- [CHAR LIMIT=60] Notification importance reset button -->
    <string name="importance_reset">Reset</string>
@@ -6329,13 +6323,19 @@
    <string name="app_notification_block_title">Block all</string>
    <!-- [CHAR LIMIT=NONE] App notification settings: Block option description-->
    <string name="app_notification_block_summary">Never show notifications from this app</string>
    <string name="app_notification_block_summary">Never show these notifications</string>
    <!-- [CHAR LIMIT=NONE] Channel notification settings: Block option title -->
    <string name="channel_notification_block_title">Block all</string>
    <string name="notification_content_block_title">Show notifications</string>
    <!-- [CHAR LIMIT=NONE] Channel notification settings: Block option description-->
    <string name="channel_notification_block_summary">Never show notifications from this channel</string>
    <string name="notification_content_block_summary">Never show notifications in the shade or on peripheral devices</string>
    <!-- [CHAR LIMIT=NONE] Channel notification settings: Badging option title -->
    <string name="notification_badge_title">Show badge</string>
    <!-- [CHAR LIMIT=NONE] Channel notification settings: Badge option description-->
    <string name="notification_badge_summary">Show notifications as badges on the Home app, if supported.</string>
    <!-- [CHAR LIMIT=NONE] App notification settings: Override DND option title -->
    <string name="app_notification_override_dnd_title">Override Do Not Disturb</string>
@@ -6346,7 +6346,7 @@
    <!-- [CHAR LIMIT=NONE] App notification settings: Visibility override option title -->
    <string name="app_notification_visibility_override_title">On the lock screen</string>
    <!-- [CHAR LIMIT=20] Notification settings: App notifications row summary when banned -->
    <!-- [CHAR LIMIT=20] Notification settings: App notifications row summary when allowed -->
    <string name="app_notification_row_banned">Blocked</string>
    <!-- [CHAR LIMIT=40] Notification settings: App notifications row summary when high priority -->
@@ -6788,14 +6788,6 @@
    <string name="filter_notif_blocked_apps">Blocked</string>
    <!-- Label for showing apps with domain URLs (data URI with http or https) in list [CHAR LIMIT=30] -->
    <string name="filter_with_domain_urls_apps">With domain URLs</string>
    <!-- Label for showing apps with priority notifications in list [CHAR LIMIT=50] -->
    <string name="filter_notif_priority_apps">Overrides Do Not Disturb</string>
    <!-- Label for showing apps redacting sensitive notifications in list [CHAR LIMIT=50] -->
    <string name="filter_notif_sensitive_apps">No sensitive content on lock screen</string>
    <!-- Label for showing apps hiding notifications from lockscreen [CHAR LIMIT=50] -->
    <string name="filter_notif_hide_notifications_apps">Never shown on lock screen</string>
    <!-- Filter label for apps that the user has silenced [CHAR LIMIT=40] -->
    <string name="filter_notif_silent">Shown silently</string>
    <!-- Title for advanced application management settings [CHAR LIMIT=30] -->
    <string name="advanced_apps">Advanced</string>
+7 −35
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@
        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
        android:title="@string/app_notifications_title"
        android:key="app_notification_settings">

    <!-- Importance -->
    <!-- Block -->
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="block"
@@ -28,36 +26,10 @@
        android:order="2"
        settings:useAdditionalSummary="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />
    <!-- Silent -->
    <com.android.settingslib.RestrictedSwitchPreference
            android:key="silent"
            android:title="@string/show_silently"
            android:summary="@string/show_silently_summary"
            android:order="3"
            settings:useAdditionalSummary="true" />
    <!-- Slider -->
    <com.android.settings.notification.ImportanceSeekBarPreference
            android:key="importance"
            android:title="@string/notification_importance_title"
            android:order="4"/>

    <!-- Visibility Override -->
    <com.android.settings.notification.RestrictedDropDownPreference
            android:key="visibility_override"
            android:title="@string/app_notification_visibility_override_title"
            android:order="5" />

    <!-- Bypass DND -->
    <com.android.settingslib.RestrictedSwitchPreference
            android:key="bypass_dnd"
            android:title="@string/app_notification_override_dnd_title"
            android:summary="@string/app_notification_override_dnd_summary"
            android:order="6"
            settings:useAdditionalSummary="true" />

    <PreferenceCategory
            android:key="channels"
            android:title="@string/notification_channels"
            android:order="7" />
            android:order="3" />

</PreferenceScreen>
+26 −14
Original line number Diff line number Diff line
@@ -21,20 +21,32 @@
    <!-- Block -->
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="block"
            android:title="@string/channel_notification_block_title"
        android:title="@string/app_notification_block_title"
        android:summary="@string/app_notification_block_summary"
        android:order="1"
        settings:useAdditionalSummary="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />

    <!-- Show notification -->
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="show"
        android:title="@string/notification_content_block_title"
        android:summary="@string/notification_content_block_summary"
        android:order="2"
        settings:useAdditionalSummary="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />
    <!-- Silent -->

    <!-- Show badge -->
    <com.android.settingslib.RestrictedSwitchPreference
            android:key="silent"
            android:title="@string/show_silently"
            android:summary="@string/show_silently_summary"
        android:key="badge"
        android:title="@string/notification_badge_title"
        android:summary="@string/notification_badge_summary"
        android:order="3"
            settings:useAdditionalSummary="true" />
    <!-- Slider -->
    <com.android.settings.notification.ImportanceSeekBarPreference
        settings:useAdditionalSummary="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />

    <!-- Importance -->
    <com.android.settings.notification.RestrictedDropDownPreference
            android:key="importance"
            android:title="@string/notification_importance_title"
            android:order="4"/>
+0 −60
Original line number Diff line number Diff line
@@ -81,64 +81,4 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
            return false;
        }
    };

    public static final AppFilter FILTER_APP_NOTIFICATION_SILENCED = new AppFilter() {
        @Override
        public void init() {
        }

        @Override
        public boolean filterApp(AppEntry info) {
            if (info == null || info.extraInfo == null) {
                return false;
            }
            AppRow row = (AppRow) info.extraInfo;
            return row.appImportance > NotificationManager.IMPORTANCE_NONE
                    && row.appImportance < NotificationManager.IMPORTANCE_DEFAULT;
        }
    };

    public static final AppFilter FILTER_APP_NOTIFICATION_PRIORITY = new AppFilter() {
        @Override
        public void init() {
        }

        @Override
        public boolean filterApp(AppEntry info) {
            if (info == null || info.extraInfo == null) {
                return false;
            }
            return ((AppRow) info.extraInfo).appBypassDnd;
        }
    };

    public static final AppFilter FILTER_APP_NOTIFICATION_HIDE_SENSITIVE = new AppFilter() {
        @Override
        public void init() {
        }

        @Override
        public boolean filterApp(AppEntry info) {
            if (info == null || info.extraInfo == null) {
                return false;
            }
            return ((AppRow) info.extraInfo).lockScreenSecure
                    && ((AppRow) info.extraInfo).appVisOverride == Notification.VISIBILITY_PRIVATE;
        }
    };

    public static final AppFilter FILTER_APP_NOTIFICATION_HIDE_ALL = new AppFilter() {
        @Override
        public void init() {
        }

        @Override
        public boolean filterApp(AppEntry info) {
            if (info == null || info.extraInfo == null) {
                return false;
            }
            return ((AppRow) info.extraInfo).lockScreenSecure
                    && ((AppRow) info.extraInfo).appVisOverride == Notification.VISIBILITY_SECRET;
        }
    };
}
+2 −41
Original line number Diff line number Diff line
@@ -1088,10 +1088,6 @@ public class InstalledAppDetails extends AppInfoBase
        return NetworkTemplate.buildTemplateEthernet();
    }

    public static CharSequence getNotificationSummary(AppEntry appEntry, Context context) {
        return getNotificationSummary(appEntry, context, new NotificationBackend());
    }

    public static CharSequence getNotificationSummary(AppEntry appEntry, Context context,
            NotificationBackend backend) {
        AppRow appRow = backend.loadAppRow(context, context.getPackageManager(), appEntry.info);
@@ -1099,43 +1095,8 @@ public class InstalledAppDetails extends AppInfoBase
    }

    public static CharSequence getNotificationSummary(AppRow appRow, Context context) {
        boolean showSlider = Settings.Secure.getInt(
                context.getContentResolver(), NOTIFICATION_TUNER_SETTING, 0) == 1;
        List<String> summaryAttributes = new ArrayList<>();
        StringBuffer summary = new StringBuffer();
        if (showSlider) {
            if (appRow.appImportance != NotificationManager.IMPORTANCE_UNSPECIFIED) {
                summaryAttributes.add(context.getString(
                        R.string.notification_summary_level, appRow.appImportance));
            }
        } else {
            if (appRow.banned) {
                summaryAttributes.add(context.getString(R.string.notifications_disabled));
            } else if (appRow.appImportance > NotificationManager.IMPORTANCE_NONE
                    && appRow.appImportance < NotificationManager.IMPORTANCE_DEFAULT) {
                summaryAttributes.add(context.getString(R.string.notifications_silenced));
            }
        }
        final boolean lockscreenSecure = new LockPatternUtils(context).isSecure(
                UserHandle.myUserId());
        if (lockscreenSecure) {
            if (appRow.appVisOverride == Notification.VISIBILITY_PRIVATE) {
                summaryAttributes.add(context.getString(R.string.notifications_redacted));
            } else if (appRow.appVisOverride == Notification.VISIBILITY_SECRET) {
                summaryAttributes.add(context.getString(R.string.notifications_hidden));
            }
        }
        if (appRow.appBypassDnd) {
            summaryAttributes.add(context.getString(R.string.notifications_priority));
        }
        final int N = summaryAttributes.size();
        for (int i = 0; i < N; i++) {
            if (i > 0) {
                summary.append(context.getString(R.string.notifications_summary_divider));
            }
            summary.append(summaryAttributes.get(i));
        }
        return summary.toString();
        // TODO: implement summary when it is known what it should say
        return "";
    }

    @Override
Loading