diff options
| -rw-r--r-- | core/java/com/android/internal/widget/MessagingData.java | 4 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/MessagingLayout.java | 29 |
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); } /** |