summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/widget/MessagingData.java4
-rw-r--r--core/java/com/android/internal/widget/MessagingLayout.java29
2 files changed, 27 insertions, 6 deletions
diff --git a/core/java/com/android/internal/widget/MessagingData.java b/core/java/com/android/internal/widget/MessagingData.java
index cb5041efd10f..2ef3c647c004 100644
--- a/core/java/com/android/internal/widget/MessagingData.java
+++ b/core/java/com/android/internal/widget/MessagingData.java
@@ -39,10 +39,10 @@ final class MessagingData {
MessagingData(Person user, boolean showSpinner,
List<MessagingMessage> historicMessagingMessages,
List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups,
- List<Person> senders) {
+ List<Person> senders, CharSequence summarization) {
this(user, showSpinner, /* unreadCount= */0,
historicMessagingMessages, newMessagingMessages,
- groups, senders, null, null);
+ groups, senders, null, summarization);
}
MessagingData(Person user, boolean showSpinner,
diff --git a/core/java/com/android/internal/widget/MessagingLayout.java b/core/java/com/android/internal/widget/MessagingLayout.java
index 5d190706d9f6..90ab6605b2e8 100644
--- a/core/java/com/android/internal/widget/MessagingLayout.java
+++ b/core/java/com/android/internal/widget/MessagingLayout.java
@@ -86,6 +86,7 @@ public class MessagingLayout extends FrameLayout
private CharSequence mConversationTitle;
private final ArrayList<MessagingLinearLayout.MessagingChild> mToRecycle = new ArrayList<>();
private boolean mPrecomputedTextEnabled = false;
+ private CharSequence mSummarizedContent;
public MessagingLayout(@NonNull Context context) {
super(context);
@@ -140,6 +141,16 @@ public class MessagingLayout extends FrameLayout
mIsCollapsed = isCollapsed;
}
+ /**
+ * setDataAsync needs to do different stuff for the collapsed vs expanded view, so store the
+ * collapsed state early.
+ */
+ @RemotableViewMethod(asyncImpl = "setIsCollapsedAsync")
+ public Runnable setIsCollapsedAsync(boolean isCollapsed) {
+ mIsCollapsed = isCollapsed;
+ return () -> {};
+ }
+
@RemotableViewMethod
public void setLargeIcon(Icon largeIcon) {
// Unused
@@ -182,10 +193,20 @@ public class MessagingLayout extends FrameLayout
boolean showSpinner =
extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false);
+
final List<MessagingMessage> historicMessagingMessages = createMessages(newHistoricMessages,
/* isHistoric= */true, usePrecomputedText);
- final List<MessagingMessage> newMessagingMessages =
- createMessages(newMessages, /* isHistoric */false, usePrecomputedText);
+ List<MessagingMessage> newMessagingMessages;
+ mSummarizedContent = extras.getCharSequence(Notification.EXTRA_SUMMARIZED_CONTENT);
+ if (mSummarizedContent != null && mIsCollapsed) {
+ Notification.MessagingStyle.Message summary =
+ new Notification.MessagingStyle.Message(mSummarizedContent, 0, "");
+ newMessagingMessages = createMessages(List.of(summary), false, usePrecomputedText);
+ } else {
+ newMessagingMessages =
+ createMessages(newMessages, /* isHistoric= */false, usePrecomputedText);
+ }
+
// Let's first find our groups!
List<List<MessagingMessage>> groups = new ArrayList<>();
List<Person> senders = new ArrayList<>();
@@ -193,8 +214,8 @@ public class MessagingLayout extends FrameLayout
// Lets first find the groups
findGroups(historicMessagingMessages, newMessagingMessages, groups, senders);
- return new MessagingData(user, showSpinner,
- historicMessagingMessages, newMessagingMessages, groups, senders);
+ return new MessagingData(user, showSpinner, historicMessagingMessages, newMessagingMessages,
+ groups, senders, mSummarizedContent);
}
/**