Loading core/java/com/android/internal/widget/ConversationLayout.java +22 −21 Original line number Diff line number Diff line Loading @@ -432,8 +432,14 @@ public class ConversationLayout extends FrameLayout final List<MessagingMessage> newHistoricMessagingMessages = createMessages(newHistoricMessages, /* isHistoric= */true, usePrecomputedText); // Add our new MessagingMessages to groups List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups (populate `groups` and `senders`) findGroups(newHistoricMessagingMessages, newMessagingMessages, user, groups, senders); return new MessagingData(user, showSpinner, unreadCount, newHistoricMessagingMessages, newMessagingMessages); newHistoricMessagingMessages, newMessagingMessages, groups, senders); } /** Loading Loading @@ -509,21 +515,13 @@ public class ConversationLayout extends FrameLayout setUser(messagingData.getUser()); setUnreadCount(messagingData.getUnreadCount()); List<MessagingMessage> messages = messagingData.getNewMessagingMessages(); List<MessagingMessage> historicMessages = messagingData.getHistoricMessagingMessages(); // Copy our groups, before they get clobbered ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups); // Add our new MessagingMessages to groups List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups (populate `groups` and `senders`) findGroups(historicMessages, messages, groups, senders); // Let's now create the views and reorder them accordingly // side-effect: updates mGroups, mAddedGroups createGroupViews(groups, senders, messagingData.getShowSpinner()); createGroupViews(messagingData.getGroups(), messagingData.getSenders(), messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); Loading @@ -536,8 +534,8 @@ public class ConversationLayout extends FrameLayout historicMessage.removeMessage(mToRecycle); } mMessages = messages; mHistoricMessages = historicMessages; mMessages = messagingData.getNewMessagingMessages(); mHistoricMessages = messagingData.getHistoricMessagingMessages(); updateHistoricMessageVisibility(); updateTitleAndNamesDisplay(); Loading Loading @@ -983,9 +981,12 @@ public class ConversationLayout extends FrameLayout } } /** * Finds groups and senders from the given messaging messages and fills outGroups and outSenders */ private void findGroups(List<MessagingMessage> historicMessages, List<MessagingMessage> messages, List<List<MessagingMessage>> groups, List<Person> senders) { List<MessagingMessage> messages, Person user, List<List<MessagingMessage>> outGroups, List<Person> outSenders) { CharSequence currentSenderKey = null; List<MessagingMessage> currentGroup = null; int histSize = historicMessages.size(); Loading @@ -1003,14 +1004,14 @@ public class ConversationLayout extends FrameLayout isNewGroup |= !TextUtils.equals(key, currentSenderKey); if (isNewGroup) { currentGroup = new ArrayList<>(); groups.add(currentGroup); outGroups.add(currentGroup); if (sender == null) { sender = mUser; sender = user; } else { // Remove all formatting from the sender name sender = sender.toBuilder().setName(Objects.toString(sender.getName())).build(); } senders.add(sender); outSenders.add(sender); currentSenderKey = key; } currentGroup.add(message); Loading core/java/com/android/internal/widget/MessagingData.java +20 −3 Original line number Diff line number Diff line Loading @@ -28,24 +28,33 @@ final class MessagingData { private final boolean mShowSpinner; private final List<MessagingMessage> mHistoricMessagingMessages; private final List<MessagingMessage> mNewMessagingMessages; private final List<List<MessagingMessage>> mGroups; private final List<Person> mSenders; private final int mUnreadCount; MessagingData(Person user, boolean showSpinner, List<MessagingMessage> historicMessagingMessages, List<MessagingMessage> newMessagingMessages) { List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups, List<Person> senders) { this(user, showSpinner, /* unreadCount= */0, historicMessagingMessages, newMessagingMessages); historicMessagingMessages, newMessagingMessages, groups, senders); } MessagingData(Person user, boolean showSpinner, int unreadCount, List<MessagingMessage> historicMessagingMessages, List<MessagingMessage> newMessagingMessages) { List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups, List<Person> senders) { mUser = user; mShowSpinner = showSpinner; mUnreadCount = unreadCount; mHistoricMessagingMessages = historicMessagingMessages; mNewMessagingMessages = newMessagingMessages; mGroups = groups; mSenders = senders; } public Person getUser() { Loading @@ -67,4 +76,12 @@ final class MessagingData { public int getUnreadCount() { return mUnreadCount; } public List<Person> getSenders() { return mSenders; } public List<List<MessagingMessage>> getGroups() { return mGroups; } } core/java/com/android/internal/widget/MessagingLayout.java +12 −19 Original line number Diff line number Diff line Loading @@ -189,9 +189,15 @@ public class MessagingLayout extends FrameLayout /* isHistoric= */true, usePrecomputedText); final List<MessagingMessage> newMessagingMessages = createMessages(newMessages, /* isHistoric */false, usePrecomputedText); // Let's first find our groups! List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups findGroups(historicMessagingMessages, newMessagingMessages, groups, senders); return new MessagingData(user, showSpinner, historicMessagingMessages, newMessagingMessages); historicMessagingMessages, newMessagingMessages, groups, senders); } /** Loading Loading @@ -256,10 +262,10 @@ public class MessagingLayout extends FrameLayout private void bind(MessagingData messagingData) { setUser(messagingData.getUser()); List<MessagingMessage> historicMessages = messagingData.getHistoricMessagingMessages(); List<MessagingMessage> messages = messagingData.getNewMessagingMessages(); // Let's now create the views and reorder them accordingly ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups); addMessagesToGroups(historicMessages, messages, messagingData.getShowSpinner()); createGroupViews(messagingData.getGroups(), messagingData.getSenders(), messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); Loading @@ -272,8 +278,8 @@ public class MessagingLayout extends FrameLayout historicMessage.removeMessage(mToRecycle); } mMessages = messages; mHistoricMessages = historicMessages; mMessages = messagingData.getNewMessagingMessages(); mHistoricMessages = messagingData.getHistoricMessagingMessages(); updateHistoricMessageVisibility(); updateTitleAndNamesDisplay(); Loading Loading @@ -451,19 +457,6 @@ public class MessagingLayout extends FrameLayout } } private void addMessagesToGroups(List<MessagingMessage> historicMessages, List<MessagingMessage> messages, boolean showSpinner) { // Let's first find our groups! List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups findGroups(historicMessages, messages, groups, senders); // Let's now create the views and reorder them accordingly createGroupViews(groups, senders, showSpinner); } private void createGroupViews(List<List<MessagingMessage>> groups, List<Person> senders, boolean showSpinner) { mGroups.clear(); Loading Loading
core/java/com/android/internal/widget/ConversationLayout.java +22 −21 Original line number Diff line number Diff line Loading @@ -432,8 +432,14 @@ public class ConversationLayout extends FrameLayout final List<MessagingMessage> newHistoricMessagingMessages = createMessages(newHistoricMessages, /* isHistoric= */true, usePrecomputedText); // Add our new MessagingMessages to groups List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups (populate `groups` and `senders`) findGroups(newHistoricMessagingMessages, newMessagingMessages, user, groups, senders); return new MessagingData(user, showSpinner, unreadCount, newHistoricMessagingMessages, newMessagingMessages); newHistoricMessagingMessages, newMessagingMessages, groups, senders); } /** Loading Loading @@ -509,21 +515,13 @@ public class ConversationLayout extends FrameLayout setUser(messagingData.getUser()); setUnreadCount(messagingData.getUnreadCount()); List<MessagingMessage> messages = messagingData.getNewMessagingMessages(); List<MessagingMessage> historicMessages = messagingData.getHistoricMessagingMessages(); // Copy our groups, before they get clobbered ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups); // Add our new MessagingMessages to groups List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups (populate `groups` and `senders`) findGroups(historicMessages, messages, groups, senders); // Let's now create the views and reorder them accordingly // side-effect: updates mGroups, mAddedGroups createGroupViews(groups, senders, messagingData.getShowSpinner()); createGroupViews(messagingData.getGroups(), messagingData.getSenders(), messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); Loading @@ -536,8 +534,8 @@ public class ConversationLayout extends FrameLayout historicMessage.removeMessage(mToRecycle); } mMessages = messages; mHistoricMessages = historicMessages; mMessages = messagingData.getNewMessagingMessages(); mHistoricMessages = messagingData.getHistoricMessagingMessages(); updateHistoricMessageVisibility(); updateTitleAndNamesDisplay(); Loading Loading @@ -983,9 +981,12 @@ public class ConversationLayout extends FrameLayout } } /** * Finds groups and senders from the given messaging messages and fills outGroups and outSenders */ private void findGroups(List<MessagingMessage> historicMessages, List<MessagingMessage> messages, List<List<MessagingMessage>> groups, List<Person> senders) { List<MessagingMessage> messages, Person user, List<List<MessagingMessage>> outGroups, List<Person> outSenders) { CharSequence currentSenderKey = null; List<MessagingMessage> currentGroup = null; int histSize = historicMessages.size(); Loading @@ -1003,14 +1004,14 @@ public class ConversationLayout extends FrameLayout isNewGroup |= !TextUtils.equals(key, currentSenderKey); if (isNewGroup) { currentGroup = new ArrayList<>(); groups.add(currentGroup); outGroups.add(currentGroup); if (sender == null) { sender = mUser; sender = user; } else { // Remove all formatting from the sender name sender = sender.toBuilder().setName(Objects.toString(sender.getName())).build(); } senders.add(sender); outSenders.add(sender); currentSenderKey = key; } currentGroup.add(message); Loading
core/java/com/android/internal/widget/MessagingData.java +20 −3 Original line number Diff line number Diff line Loading @@ -28,24 +28,33 @@ final class MessagingData { private final boolean mShowSpinner; private final List<MessagingMessage> mHistoricMessagingMessages; private final List<MessagingMessage> mNewMessagingMessages; private final List<List<MessagingMessage>> mGroups; private final List<Person> mSenders; private final int mUnreadCount; MessagingData(Person user, boolean showSpinner, List<MessagingMessage> historicMessagingMessages, List<MessagingMessage> newMessagingMessages) { List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups, List<Person> senders) { this(user, showSpinner, /* unreadCount= */0, historicMessagingMessages, newMessagingMessages); historicMessagingMessages, newMessagingMessages, groups, senders); } MessagingData(Person user, boolean showSpinner, int unreadCount, List<MessagingMessage> historicMessagingMessages, List<MessagingMessage> newMessagingMessages) { List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups, List<Person> senders) { mUser = user; mShowSpinner = showSpinner; mUnreadCount = unreadCount; mHistoricMessagingMessages = historicMessagingMessages; mNewMessagingMessages = newMessagingMessages; mGroups = groups; mSenders = senders; } public Person getUser() { Loading @@ -67,4 +76,12 @@ final class MessagingData { public int getUnreadCount() { return mUnreadCount; } public List<Person> getSenders() { return mSenders; } public List<List<MessagingMessage>> getGroups() { return mGroups; } }
core/java/com/android/internal/widget/MessagingLayout.java +12 −19 Original line number Diff line number Diff line Loading @@ -189,9 +189,15 @@ public class MessagingLayout extends FrameLayout /* isHistoric= */true, usePrecomputedText); final List<MessagingMessage> newMessagingMessages = createMessages(newMessages, /* isHistoric */false, usePrecomputedText); // Let's first find our groups! List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups findGroups(historicMessagingMessages, newMessagingMessages, groups, senders); return new MessagingData(user, showSpinner, historicMessagingMessages, newMessagingMessages); historicMessagingMessages, newMessagingMessages, groups, senders); } /** Loading Loading @@ -256,10 +262,10 @@ public class MessagingLayout extends FrameLayout private void bind(MessagingData messagingData) { setUser(messagingData.getUser()); List<MessagingMessage> historicMessages = messagingData.getHistoricMessagingMessages(); List<MessagingMessage> messages = messagingData.getNewMessagingMessages(); // Let's now create the views and reorder them accordingly ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups); addMessagesToGroups(historicMessages, messages, messagingData.getShowSpinner()); createGroupViews(messagingData.getGroups(), messagingData.getSenders(), messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); Loading @@ -272,8 +278,8 @@ public class MessagingLayout extends FrameLayout historicMessage.removeMessage(mToRecycle); } mMessages = messages; mHistoricMessages = historicMessages; mMessages = messagingData.getNewMessagingMessages(); mHistoricMessages = messagingData.getHistoricMessagingMessages(); updateHistoricMessageVisibility(); updateTitleAndNamesDisplay(); Loading Loading @@ -451,19 +457,6 @@ public class MessagingLayout extends FrameLayout } } private void addMessagesToGroups(List<MessagingMessage> historicMessages, List<MessagingMessage> messages, boolean showSpinner) { // Let's first find our groups! List<List<MessagingMessage>> groups = new ArrayList<>(); List<Person> senders = new ArrayList<>(); // Lets first find the groups findGroups(historicMessages, messages, groups, senders); // Let's now create the views and reorder them accordingly createGroupViews(groups, senders, showSpinner); } private void createGroupViews(List<List<MessagingMessage>> groups, List<Person> senders, boolean showSpinner) { mGroups.clear(); Loading