diff options
author | Andy Huang <ath@google.com> | 2012-09-25 14:50:54 -0700 |
---|---|---|
committer | Andy Huang <ath@google.com> | 2012-09-25 16:36:52 -0700 |
commit | 014ea4c15d147794789b9c5bf4e243fa08781ad9 (patch) | |
tree | b223f0ed576522ea27f2e0d2af39e8857956dafa /src/com/android/mail/browse/ConversationViewAdapter.java | |
parent | e0a0e0a2bd6a1bc46988afc68a864bb51599b21a (diff) | |
download | android_packages_apps_UnifiedEmail-014ea4c15d147794789b9c5bf4e243fa08781ad9.tar.gz android_packages_apps_UnifiedEmail-014ea4c15d147794789b9c5bf4e243fa08781ad9.tar.bz2 android_packages_apps_UnifiedEmail-014ea4c15d147794789b9c5bf4e243fa08781ad9.zip |
handle sender/body changes in-place
Sending a new message updates sender string (for custom froms
and such) and the body (for elided text), after the message is
sent and synced. Avoid conversation view flashing (re-render)
in those cases by applying the changes in-place.
Sender string changes will update all dependent adapter items,
and a dataset change on the adapter re-renders all overlay
views.
Body changes are handled by sending affected IDs to JS so it can
request individual message bodies. Quoted text collapsing is
then re-applied on each new body.
Bug: 7183109
Change-Id: I630187c276ffc63448e6b457c9cd02afd452c438
Diffstat (limited to 'src/com/android/mail/browse/ConversationViewAdapter.java')
-rw-r--r-- | src/com/android/mail/browse/ConversationViewAdapter.java | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/com/android/mail/browse/ConversationViewAdapter.java b/src/com/android/mail/browse/ConversationViewAdapter.java index 404310bf5..66791aaec 100644 --- a/src/com/android/mail/browse/ConversationViewAdapter.java +++ b/src/com/android/mail/browse/ConversationViewAdapter.java @@ -37,6 +37,7 @@ import com.android.mail.providers.Address; import com.android.mail.providers.Conversation; import com.android.mail.providers.UIProvider; import com.android.mail.ui.ControllableActivity; +import com.google.common.base.Objects; import com.google.common.collect.Lists; import java.util.Collection; @@ -120,7 +121,7 @@ public class ConversationViewAdapter extends BaseAdapter { } public class MessageHeaderItem extends ConversationOverlayItem { - public final ConversationMessage message; + private ConversationMessage mMessage; // view state variables private boolean mExpanded; @@ -132,12 +133,16 @@ public class ConversationViewAdapter extends BaseAdapter { public CharSequence recipientSummaryText; MessageHeaderItem(ConversationMessage message, boolean expanded) { - this.message = message; + mMessage = message; mExpanded = expanded; detailsExpanded = false; } + public ConversationMessage getMessage() { + return mMessage; + } + @Override public int getType() { return VIEW_TYPE_MESSAGE_HEADER; @@ -184,6 +189,16 @@ public class ConversationViewAdapter extends BaseAdapter { return true; } + @Override + public boolean belongsToMessage(ConversationMessage message) { + return Objects.equal(mMessage, message); + } + + @Override + public void setMessage(ConversationMessage message) { + mMessage = message; + } + } public class MessageFooterItem extends ConversationOverlayItem { @@ -395,4 +410,13 @@ public class ConversationViewAdapter extends BaseAdapter { notifyDataSetChanged(); } + public void updateItemsForMessage(ConversationMessage message) { + for (ConversationOverlayItem item : mItems) { + if (item.belongsToMessage(message)) { + item.setMessage(message); + } + } + notifyDataSetChanged(); + } + } |