summaryrefslogtreecommitdiffstats
path: root/src/com/android/mail/browse/ConversationViewAdapter.java
diff options
context:
space:
mode:
authorAndy Huang <ath@google.com>2012-09-25 14:50:54 -0700
committerAndy Huang <ath@google.com>2012-09-25 16:36:52 -0700
commit014ea4c15d147794789b9c5bf4e243fa08781ad9 (patch)
treeb223f0ed576522ea27f2e0d2af39e8857956dafa /src/com/android/mail/browse/ConversationViewAdapter.java
parente0a0e0a2bd6a1bc46988afc68a864bb51599b21a (diff)
downloadandroid_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.java28
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();
+ }
+
}