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

Commit f02bb1c5 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 am: a1343ba2

Change-Id: I8ae5c746a7f23a82a3a0c41dc1d9429b1f56ed99
parents 3cc719ae a1343ba2
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -486,15 +486,8 @@ public class StatusBarNotification implements Parcelable {
    /**
     * @hide
     */
    public String getShortcutId(Context context) {
        String conversationId = 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;
    public String getShortcutId() {
        return getNotification().getShortcutId();
    }

    /**
+200 −0
Original line number 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 Diff line number Diff line
@@ -1847,6 +1847,9 @@
    <!-- [CHAR LIMIT=150] Notification Importance title: important conversation level -->
    <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 -->
    <string name="bubble_overflow_empty_title">No recent bubbles</string>

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

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

/**
@@ -44,32 +43,18 @@ public class NotificationChannelHelper {
        if (!TextUtils.isEmpty(channel.getConversationId())) {
            return channel;
        }
        final String conversationId = entry.getSbn().getShortcutId(context);
        final String conversationId = entry.getSbn().getShortcutId();
        final String pkg = entry.getSbn().getPackageName();
        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;
        }

        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
        // a custom channel
        try {
            // TODO: When shortcuts are enforced remove this and use the shortcut label for naming
            channel.setName(context.getString(
                    R.string.notification_summary_message_format,
                    name, channel.getName()));
            channel.setName(getName(entry));
            notificationManager.createConversationNotificationChannelForPackage(
                    pkg, appUid, entry.getSbn().getKey(), channel,
                    conversationId);
@@ -81,4 +66,19 @@ public class NotificationChannelHelper {
        }
        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 Diff line number Diff line
@@ -1141,6 +1141,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        if (mMenuRow.shouldUseDefaultMenuItems()) {
            ArrayList<MenuItem> items = new ArrayList<>();
            items.add(NotificationMenuRow.createConversationItem(mContext));
            items.add(NotificationMenuRow.createPartialConversationItem(mContext));
            items.add(NotificationMenuRow.createInfoItem(mContext));
            items.add(NotificationMenuRow.createSnoozeItem(mContext));
            items.add(NotificationMenuRow.createAppOpsItem(mContext));
Loading