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

Commit 8ad2fa68 authored by Alison Cichowlas's avatar Alison Cichowlas
Browse files

Add group name into channel summary, if applicable.

Bug: 36642898
Test: ran integration & robo tests (no new failures); verified manually with apps with channels & without.

Change-Id: I16a255b0e5d929f4485d3725bd18179e6f411c03
parent 52c031ed
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -8830,4 +8830,8 @@
    <!-- Summary label for new device suggestion, which is displayed in Settings homepage [CHAR LIMIT=100] -->
    <string name="new_device_suggestion_summary">Check out the top 5 features</string>
    <!-- The divider symbol between different parts of the notification header including spaces. not translatable [CHAR LIMIT=3] -->
    <string name="notification_header_divider_symbol_with_spaces" translatable="false">" • "</string>
</resources>
+45 −3
Original line number Diff line number Diff line
@@ -18,13 +18,17 @@ package com.android.settings.notification;

import android.app.Activity;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.AsyncTask;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.text.BidiFormatter;
import android.text.SpannableStringBuilder;
import android.util.ArrayMap;
import android.util.Log;
import android.view.LayoutInflater;
@@ -60,6 +64,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
    private RestrictedSwitchPreference mVibrate;
    private NotificationSoundPreference mRingtone;
    private FooterPreference mFooter;
    private NotificationChannelGroup mChannelGroup;
    private EntityHeaderController mHeaderPref;

    @Override
    public int getMetricsCategory() {
@@ -89,6 +95,27 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
            mShowLegacyChannelConfig = true;
        } else {
            populateUpgradedChannelPrefs();

            if (mChannel.getGroup() != null) {
                // Go look up group name
                new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... unused) {
                        if (mChannel.getGroup() != null) {
                            mChannelGroup = mBackend.getGroup(mChannel.getGroup(), mPkg, mUid);
                        }
                        return null;
                    }

                    @Override
                    protected void onPostExecute(Void unused) {
                        if (getHost() == null || mChannelGroup == null) {
                            return;
                        }
                        setChannelGroupLabel(mChannelGroup.getName());
                    }
                }.execute();
            }
        }

        updateDependents(mChannel.getImportance() == IMPORTANCE_NONE);
@@ -110,9 +137,10 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
        rows.put(mAppRow.pkg, mAppRow);
        collectConfigActivities(rows);
        final Activity activity = getActivity();
        final Preference pref = EntityHeaderController
        mHeaderPref = EntityHeaderController
                .newInstance(activity, this /* fragment */, null /* header */)
                .setRecyclerView(getListView(), getLifecycle())
                .setRecyclerView(getListView(), getLifecycle());
        final Preference pref = mHeaderPref
                .setIcon(mAppRow.icon)
                .setLabel(mChannel.getName())
                .setSummary(mAppRow.label)
@@ -124,6 +152,20 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
        getPreferenceScreen().addPreference(pref);
    }

    private void setChannelGroupLabel(CharSequence groupName) {
        final SpannableStringBuilder summary = new SpannableStringBuilder();
        BidiFormatter bidi = BidiFormatter.getInstance();
        summary.append(bidi.unicodeWrap(mAppRow.label.toString()));
        if (groupName != null) {
            summary.append(bidi.unicodeWrap(mContext.getText(
                    R.string.notification_header_divider_symbol_with_spaces)));
            summary.append(bidi.unicodeWrap(groupName.toString()));
        }
        final Activity activity = getActivity();
        mHeaderPref.setSummary(summary.toString());
        mHeaderPref.done(activity, getPrefContext());
    }

    private void addFooterPref() {
        if (!TextUtils.isEmpty(mChannel.getDescription())) {
            FooterPreference descPref = new FooterPreference(getPrefContext());
+13 −0
Original line number Diff line number Diff line
@@ -122,6 +122,19 @@ public class NotificationBackend {
        }
    }


    public NotificationChannelGroup getGroup(String groupId, String pkg, int uid) {
        if (groupId == null) {
            return null;
        }
        try {
            return sINM.getNotificationChannelGroupForPackage(groupId, pkg, uid);
        } catch (Exception e) {
            Log.w(TAG, "Error calling NoMan", e);
            return null;
        }
    }

    public ParceledListSlice<NotificationChannelGroup> getChannelGroups(String pkg, int uid) {
        try {
            return sINM.getNotificationChannelGroupsForPackage(pkg, uid, false);