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

Commit a1343ba2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add experience for shortcut-less convos" into rvc-dev am: bc785483

Change-Id: I5082e8c7b34c956c8fb06d621dadc647f3841f0d
parents e95ff225 bc785483
Loading
Loading
Loading
Loading
+2 −9
Original line number Original line Diff line number Diff line
@@ -486,15 +486,8 @@ public class StatusBarNotification implements Parcelable {
    /**
    /**
     * @hide
     * @hide
     */
     */
    public String getShortcutId(Context context) {
    public String getShortcutId() {
        String conversationId = getNotification().getShortcutId();
        return getNotification().getShortcutId();
        if (TextUtils.isEmpty(conversationId)
                && (Settings.Global.getInt(context.getContentResolver(),
                Settings.Global.REQUIRE_SHORTCUTS_FOR_CONVERSATIONS, 0) == 0)
                && getNotification().getNotificationStyle() == Notification.MessagingStyle.class) {
            conversationId = getId() + getTag() + PLACEHOLDER_CONVERSATION_ID;
        }
        return conversationId;
    }
    }


    /**
    /**
+200 −0
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
    Copyright 2020, The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<com.android.systemui.statusbar.notification.row.PartialConversationInfo
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/notification_guts"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:clipChildren="false"
    android:clipToPadding="true"
    android:orientation="vertical"
    android:paddingStart="@*android:dimen/notification_content_margin_start">

    <!-- Package Info -->
    <LinearLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="@dimen/notification_guts_conversation_header_height"
        android:gravity="center_vertical"
        android:clipChildren="false"
        android:clipToPadding="false">
        <ImageView
            android:id="@+id/conversation_icon"
            android:layout_width="@dimen/notification_guts_conversation_icon_size"
            android:layout_height="@dimen/notification_guts_conversation_icon_size"
            android:layout_centerVertical="true"
            android:layout_alignParentStart="true"
            android:layout_marginEnd="15dp" />
        <LinearLayout
            android:id="@+id/names"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:orientation="vertical"

            android:layout_height="wrap_content"
            android:minHeight="@dimen/notification_guts_conversation_icon_size"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:layout_alignEnd="@id/conversation_icon"
            android:layout_toEndOf="@id/conversation_icon">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="start"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    style="@style/TextAppearance.NotificationImportanceChannel"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    style="@style/TextAppearance.NotificationImportanceHeader"
                    android:layout_marginStart="2dp"
                    android:layout_marginEnd="2dp"
                    android:text="@*android:string/notification_header_divider_symbol" />
                <TextView
                    android:id="@+id/parent_channel_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    style="@style/TextAppearance.NotificationImportanceChannel"/>

            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="start"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/pkg_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    style="@style/TextAppearance.NotificationImportanceChannelGroup"
                    android:ellipsize="end"
                    android:maxLines="1"/>
                <TextView
                    android:id="@+id/group_divider"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    style="@style/TextAppearance.NotificationImportanceHeader"
                    android:layout_marginStart="2dp"
                    android:layout_marginEnd="2dp"
                    android:text="@*android:string/notification_header_divider_symbol" />
                <TextView
                    android:id="@+id/group_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    style="@style/TextAppearance.NotificationImportanceChannelGroup"/>
            </LinearLayout>
            <TextView
                android:id="@+id/delegate_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                style="@style/TextAppearance.NotificationImportanceHeader"
                android:layout_marginStart="2dp"
                android:layout_marginEnd="2dp"
                android:ellipsize="end"
                android:text="@string/notification_delegate_header"
                android:maxLines="1" />

        </LinearLayout>

        <!-- end aligned fields -->
        <ImageButton
            android:id="@+id/info"
            android:layout_width="@dimen/notification_importance_toggle_size"
            android:layout_height="@dimen/notification_importance_toggle_size"
            android:layout_centerVertical="true"
            android:background="@drawable/ripple_drawable"
            android:contentDescription="@string/notification_more_settings"
            android:src="@drawable/ic_settings"
            android:layout_alignParentEnd="true"
            android:tint="@color/notification_guts_link_icon_tint"/>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/inline_controls"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingEnd="@*android:dimen/notification_content_margin_end"
        android:layout_marginTop="@dimen/notification_guts_option_vertical_padding"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:orientation="horizontal">
            <ImageView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:contentDescription="@null"
                android:src="@drawable/ic_info"
                android:tint="?android:attr/textColorPrimary"
                android:layout_marginEnd="8dp"/>
            <TextView
                android:id="@+id/non_configurable_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/TextAppearance.NotificationImportanceChannelGroup" />
        </LinearLayout>

        <RelativeLayout
            android:id="@+id/bottom_buttons"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:gravity="center_vertical"
            android:paddingStart="4dp"
            android:paddingEnd="4dp"
            >
            <TextView
                android:id="@+id/turn_off_notifications"
                android:text="@string/inline_turn_off_notifications"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:gravity="start|center_vertical"
                android:minWidth="@dimen/notification_importance_toggle_size"
                android:minHeight="@dimen/notification_importance_toggle_size"
                android:maxWidth="200dp"
                style="@style/TextAppearance.NotificationInfo.Button"/>
            <TextView
                android:id="@+id/done"
                android:text="@string/inline_done_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:gravity="end|center_vertical"
                android:minWidth="@dimen/notification_importance_toggle_size"
                android:minHeight="@dimen/notification_importance_toggle_size"
                android:maxWidth="125dp"
                style="@style/TextAppearance.NotificationInfo.Button"/>
        </RelativeLayout>

    </LinearLayout>
</com.android.systemui.statusbar.notification.row.PartialConversationInfo>
+3 −0
Original line number Original line Diff line number Diff line
@@ -1847,6 +1847,9 @@
    <!-- [CHAR LIMIT=150] Notification Importance title: important conversation level -->
    <!-- [CHAR LIMIT=150] Notification Importance title: important conversation level -->
    <string name="notification_priority_title">Priority</string>
    <string name="notification_priority_title">Priority</string>


    <!-- Text shown in notification guts for conversation notifications that don't implement the full feature -->
    <string name="no_shortcut"><xliff:g id="app_name" example="YouTube">%1$s</xliff:g> does not support conversation specific settings</string>

    <!-- [CHAR LIMIT=NONE] Empty overflow title -->
    <!-- [CHAR LIMIT=NONE] Empty overflow title -->
    <string name="bubble_overflow_empty_title">No recent bubbles</string>
    <string name="bubble_overflow_empty_title">No recent bubbles</string>


+19 −19
Original line number Original line Diff line number Diff line
@@ -26,7 +26,6 @@ import android.os.UserHandle;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Slog;
import android.util.Slog;


import com.android.systemui.R;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;


/**
/**
@@ -44,32 +43,18 @@ public class NotificationChannelHelper {
        if (!TextUtils.isEmpty(channel.getConversationId())) {
        if (!TextUtils.isEmpty(channel.getConversationId())) {
            return channel;
            return channel;
        }
        }
        final String conversationId = entry.getSbn().getShortcutId(context);
        final String conversationId = entry.getSbn().getShortcutId();
        final String pkg = entry.getSbn().getPackageName();
        final String pkg = entry.getSbn().getPackageName();
        final int appUid = entry.getSbn().getUid();
        final int appUid = entry.getSbn().getUid();
        if (TextUtils.isEmpty(conversationId) || TextUtils.isEmpty(pkg)) {
        if (TextUtils.isEmpty(conversationId) || TextUtils.isEmpty(pkg)
            || entry.getRanking().getShortcutInfo() == null) {
            return channel;
            return channel;
        }
        }


        String name;
        if (entry.getRanking().getShortcutInfo() != null) {
            name = entry.getRanking().getShortcutInfo().getShortLabel().toString();
        } else {
            Bundle extras = entry.getSbn().getNotification().extras;
            String nameString = extras.getString(Notification.EXTRA_CONVERSATION_TITLE);
            if (TextUtils.isEmpty(nameString)) {
                nameString = extras.getString(Notification.EXTRA_TITLE);
            }
            name = nameString;
        }

        // If this channel is not already a customized conversation channel, create
        // If this channel is not already a customized conversation channel, create
        // a custom channel
        // a custom channel
        try {
        try {
            // TODO: When shortcuts are enforced remove this and use the shortcut label for naming
            channel.setName(getName(entry));
            channel.setName(context.getString(
                    R.string.notification_summary_message_format,
                    name, channel.getName()));
            notificationManager.createConversationNotificationChannelForPackage(
            notificationManager.createConversationNotificationChannelForPackage(
                    pkg, appUid, entry.getSbn().getKey(), channel,
                    pkg, appUid, entry.getSbn().getKey(), channel,
                    conversationId);
                    conversationId);
@@ -81,4 +66,19 @@ public class NotificationChannelHelper {
        }
        }
        return channel;
        return channel;
    }
    }

    private static String getName(NotificationEntry entry) {
        if (entry.getRanking().getShortcutInfo().getShortLabel() != null) {
            return entry.getRanking().getShortcutInfo().getShortLabel().toString();
        }
        Bundle extras = entry.getSbn().getNotification().extras;
        String nameString = extras.getString(Notification.EXTRA_CONVERSATION_TITLE);
        if (TextUtils.isEmpty(nameString)) {
            nameString = extras.getString(Notification.EXTRA_TITLE);
        }
        if (TextUtils.isEmpty(nameString)) {
            nameString = "fallback";
        }
        return nameString;
    }
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -1141,6 +1141,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        if (mMenuRow.shouldUseDefaultMenuItems()) {
        if (mMenuRow.shouldUseDefaultMenuItems()) {
            ArrayList<MenuItem> items = new ArrayList<>();
            ArrayList<MenuItem> items = new ArrayList<>();
            items.add(NotificationMenuRow.createConversationItem(mContext));
            items.add(NotificationMenuRow.createConversationItem(mContext));
            items.add(NotificationMenuRow.createPartialConversationItem(mContext));
            items.add(NotificationMenuRow.createInfoItem(mContext));
            items.add(NotificationMenuRow.createInfoItem(mContext));
            items.add(NotificationMenuRow.createSnoozeItem(mContext));
            items.add(NotificationMenuRow.createSnoozeItem(mContext));
            items.add(NotificationMenuRow.createAppOpsItem(mContext));
            items.add(NotificationMenuRow.createAppOpsItem(mContext));
Loading