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

Commit e0f8db5d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Notification settings updates"

parents 2c0cee41 3527ef7c
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -6926,7 +6926,7 @@
    <string name="notification_group_title">Notification category group</string>
    <!-- [CHAR LIMIT=100] Notification importance screen title -->
    <string name="notification_importance_title">Importance</string>
    <string name="notification_importance_title">Behavior</string>
    <!-- [CHAR LIMIT=100 BACKUP_MESSAGE_ID=1820188704793497324] Notification Importance: unspecified importance level description -->
    <string name="notification_importance_unspecified">Allow sound</string>
@@ -6991,6 +6991,9 @@
    <!-- [CHAR LIMIT=100] Notification Importance title: high importance level title -->
    <string name="notification_channel_summary_high">Urgent importance</string>
    <!-- [CHAR LIMIT=100] Label for on/off toggle -->
    <string name="notification_switch_label">Show notifications</string>
    <!-- Default Apps > Default notification assistant -->
    <string name="default_notification_assistant">Notification assistant</string>
@@ -7087,13 +7090,13 @@
    <string name="loading_notification_apps">Loading apps...</string>
    <!-- [CHAR LIMIT=NONE] Text appearing when app notifications are off -->
    <string name="app_notifications_off_desc">Android is blocking this app\'s notifications from appearing on this device</string>
    <string name="app_notifications_off_desc">At your request, Android is blocking this app\'s notifications from appearing on this device</string>
    <!-- [CHAR LIMIT=NONE] Text appearing when channel notifications are off -->
    <string name="channel_notifications_off_desc">Android is blocking this category of notifications from appearing on this device</string>
    <string name="channel_notifications_off_desc">At your request, Android is blocking this category of notifications from appearing on this device</string>
    <!-- [CHAR LIMIT=NONE] Text appearing when channel group notifications are off -->
    <string name="channel_group_notifications_off_desc">Android is blocking this group of notifications from appearing on this device</string>
    <string name="channel_group_notifications_off_desc">At your request, Android is blocking this group of notifications from appearing on this device</string>
    <!-- [CHAR LIMIT=NONE] App notification settings: channels title -->
    <string name="notification_channels">Categories</string>
+2 −1
Original line number Diff line number Diff line
@@ -15,7 +15,8 @@
-->

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:settings="http://schemas.android.com/apk/res-auto" >
        xmlns:settings="http://schemas.android.com/apk/res-auto"
        settings:initialExpandedChildrenCount="3">

    <com.android.settings.applications.LayoutPreference
        android:key="pref_app_header"
+4 −9
Original line number Diff line number Diff line
@@ -19,20 +19,15 @@

        <com.android.settings.widget.RadioButtonPreference
            android:key="importance_high"
            android:title="@string/notification_importance_high_title"
            android:summary="@string/notification_importance_high"
        />
            android:title="@string/notification_importance_high" />
        <com.android.settings.widget.RadioButtonPreference
            android:key="importance_default"
            android:title="@string/notification_importance_default_title"
            android:summary="@string/notification_importance_default" />
            android:title="@string/notification_importance_default" />
        <com.android.settings.widget.RadioButtonPreference
            android:key="importance_low"
            android:title="@string/notification_importance_low_title"
            android:summary="@string/notification_importance_low" />
            android:title="@string/notification_importance_low" />
        <com.android.settings.widget.RadioButtonPreference
            android:key="importance_min"
            android:title="@string/notification_importance_min_title"
            android:summary="@string/notification_importance_min" />
            android:title="@string/notification_importance_min" />

</PreferenceScreen>
+28 −49
Original line number Diff line number Diff line
@@ -135,7 +135,6 @@ public class AppNotificationSettings extends NotificationSettingsBase {
        return new ArrayList<>(mControllers);
    }


    private void populateList() {
        if (!mDynamicPreferences.isEmpty()) {
            // If there's anything in mChannelGroups, we've called populateChannelList twice.
@@ -164,59 +163,39 @@ public class AppNotificationSettings extends NotificationSettingsBase {
    }

    private void populateGroupList() {
        for (NotificationChannelGroup group : mChannelGroupList) {
            PreferenceCategory groupCategory = new PreferenceCategory(getPrefContext());
        groupCategory.setTitle(R.string.notification_channels);
        groupCategory.setKey(KEY_GENERAL_CATEGORY);
            groupCategory.setOrderingAsAdded(true);
            getPreferenceScreen().addPreference(groupCategory);
            mDynamicPreferences.add(groupCategory);
        for (NotificationChannelGroup group : mChannelGroupList) {
            final List<NotificationChannel> channels = group.getChannels();
            int N = channels.size();
            // app defined groups with one channel and channels with no group display the channel
            // name and no summary and link directly to the channel page unless the group is blocked
            if ((group.getId() == null || N < 2) && !group.isBlocked()) {
                Collections.sort(channels, mChannelComparator);
                for (int i = 0; i < N; i++) {
                    final NotificationChannel channel = channels.get(i);
                    populateSingleChannelPrefs(groupCategory, channel, "");
                }
            if (group.getId() == null) {
                groupCategory.setTitle(mChannelGroupList.size() > 1
                        ? R.string.notification_channels_other
                        : R.string.notification_channels);
                groupCategory.setKey(KEY_GENERAL_CATEGORY);
            } else {
                populateGroupPreference(groupCategory, group, N);
            }
        }
    }

    void populateGroupPreference(PreferenceGroup parent,
            final NotificationChannelGroup group, int channelCount) {
        MasterSwitchPreference groupPref = new MasterSwitchPreference(
                getPrefContext());
        groupPref.setSwitchEnabled(mSuspendedAppsAdmin == null
                && isChannelGroupBlockable(group));
        groupPref.setKey(group.getId());
        groupPref.setTitle(group.getName());
        groupPref.setChecked(!group.isBlocked());
        groupPref.setSummary(getResources().getQuantityString(
                R.plurals.notification_group_summary, channelCount, channelCount));
                groupCategory.setTitle(group.getName());
                groupCategory.setKey(group.getId());
                Bundle groupArgs = new Bundle();
                groupArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid);
                groupArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
                groupArgs.putString(Settings.EXTRA_CHANNEL_GROUP_ID, group.getId());
        Intent groupIntent = Utils.onBuildStartFragmentIntent(getActivity(),
                Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(),
                        ChannelGroupNotificationSettings.class.getName(),
                groupArgs, null, R.string.notification_group_title, null, false,
                getMetricsCategory());
        groupPref.setIntent(groupIntent);

        groupPref.setOnPreferenceChangeListener(
                (preference, o) -> {
                    boolean value = (Boolean) o;
                    group.setBlocked(!value);
                    mBackend.updateChannelGroup(mPkg, mUid, group);

                    return true;
                });
        parent.addPreference(groupPref);
                        groupArgs, null, R.string.notification_group_title,
                        null, false, getMetricsCategory());
                groupCategory.setIntent(channelIntent);
                populateGroupToggle(groupCategory, group);
            }

            final List<NotificationChannel> channels = group.getChannels();
            Collections.sort(channels, mChannelComparator);
            int N = channels.size();
            for (int i = 0; i < N; i++) {
                final NotificationChannel channel = channels.get(i);
                populateSingleChannelPrefs(groupCategory, channel, group.isBlocked());
            }
        }
    }

    private Comparator<NotificationChannelGroup> mChannelGroupComparator =
+2 −0
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@ public class BlockPreferenceController extends NotificationPreferenceController
        LayoutPreference pref = (LayoutPreference) preference;
        SwitchBar bar = pref.findViewById(R.id.switch_bar);
        if (bar != null) {
            bar.setSwitchBarText(R.string.notification_switch_label,
                    R.string.notification_switch_label);
            bar.show();
            try {
                bar.addOnSwitchChangeListener(this);
Loading