diff options
author | Andrew Sapperstein <asapperstein@google.com> | 2013-07-31 10:52:02 -0700 |
---|---|---|
committer | Andrew Sapperstein <asapperstein@google.com> | 2013-08-01 16:12:10 -0700 |
commit | cee3c90574b48ccaa0f8b9f9341383c231ed41d2 (patch) | |
tree | d16fb5c2e7366c6f8db1f43c6a5f73b1af0d2f53 /src/com/android/mail/browse/ConversationViewAdapter.java | |
parent | 215ac5e5f127918d80bd4e4eb4fcb6ce801ae6b4 (diff) | |
download | android_packages_apps_UnifiedEmail-cee3c90574b48ccaa0f8b9f9341383c231ed41d2.tar.gz android_packages_apps_UnifiedEmail-cee3c90574b48ccaa0f8b9f9341383c231ed41d2.tar.bz2 android_packages_apps_UnifiedEmail-cee3c90574b48ccaa0f8b9f9341383c231ed41d2.zip |
Conversation UI Visual Refresh: border fixes.
Borders now expand and collapsed based upon the state
of the messages above and below them. Also fixed a bug
where replying to a message added an additional border.
Change-Id: Ia90caf4ea595767a90213fe33b29e1bd75c0aca0
Diffstat (limited to 'src/com/android/mail/browse/ConversationViewAdapter.java')
-rw-r--r-- | src/com/android/mail/browse/ConversationViewAdapter.java | 74 |
1 files changed, 64 insertions, 10 deletions
diff --git a/src/com/android/mail/browse/ConversationViewAdapter.java b/src/com/android/mail/browse/ConversationViewAdapter.java index 620a5fc6b..64fc2f496 100644 --- a/src/com/android/mail/browse/ConversationViewAdapter.java +++ b/src/com/android/mail/browse/ConversationViewAdapter.java @@ -187,6 +187,7 @@ public class ConversationViewAdapter extends BaseAdapter { return !isExpanded(); } + @Override public boolean isExpanded() { return mExpanded; } @@ -242,6 +243,10 @@ public class ConversationViewAdapter extends BaseAdapter { mTimestampLong = mDateBuilder.formatLongDateTime(mTimestampMs); } } + + public ConversationViewAdapter getAdapter() { + return mAdapter; + } } public class MessageFooterItem extends ConversationOverlayItem { @@ -249,10 +254,10 @@ public class ConversationViewAdapter extends BaseAdapter { * A footer can only exist if there is a matching header. Requiring a header allows a * footer to stay in sync with the expanded state of the header. */ - private final MessageHeaderItem headerItem; + private final MessageHeaderItem mHeaderitem; private MessageFooterItem(MessageHeaderItem item) { - headerItem = item; + mHeaderitem = item; } @Override @@ -271,7 +276,7 @@ public class ConversationViewAdapter extends BaseAdapter { @Override public void bindView(View v, boolean measureOnly) { final MessageFooterView attachmentsView = (MessageFooterView) v; - attachmentsView.bind(headerItem, mAccountController.getAccount().uri, measureOnly); + attachmentsView.bind(mHeaderitem, mAccountController.getAccount().uri, measureOnly); } @Override @@ -280,6 +285,11 @@ public class ConversationViewAdapter extends BaseAdapter { } @Override + public boolean isExpanded() { + return mHeaderitem.isExpanded(); + } + + @Override public int getGravity() { // attachments are top-aligned within their spacer area // Attachments should stay near the body they belong to, even when zoomed far in. @@ -290,7 +300,7 @@ public class ConversationViewAdapter extends BaseAdapter { public int getHeight() { // a footer may change height while its view does not exist because it is offscreen // (but the header is onscreen and thus collapsible) - if (!headerItem.isExpanded()) { + if (!mHeaderitem.isExpanded()) { return 0; } return super.getHeight(); @@ -331,6 +341,11 @@ public class ConversationViewAdapter extends BaseAdapter { return true; } + @Override + public boolean isExpanded() { + return false; + } + public int getStart() { return mStart; } @@ -348,11 +363,16 @@ public class ConversationViewAdapter extends BaseAdapter { public class BorderItem extends ConversationOverlayItem { private final boolean mContiguous; + private boolean mExpanded; private final boolean mFirstBorder; + private boolean mLastBorder; - public BorderItem(boolean contiguous, boolean firstBorder) { + public BorderItem(boolean contiguous, boolean isExpanded, + boolean firstBorder, boolean lastBorder) { mContiguous = contiguous; + mExpanded = isExpanded; mFirstBorder = firstBorder; + mLastBorder = lastBorder; } @Override @@ -377,13 +397,39 @@ public class ConversationViewAdapter extends BaseAdapter { } @Override + public boolean isExpanded() { + return mExpanded; + } + + public void setExpanded(boolean isExpanded) { + mExpanded = isExpanded; + } + + @Override public boolean canPushSnapHeader() { - return true; + return false; } public boolean isFirstBorder() { return mFirstBorder; } + + public boolean isLastBorder() { + return mLastBorder; + } + + public void setIsLastBorder(boolean isLastBorder) { + mLastBorder = isLastBorder; + } + + public ConversationViewAdapter getAdapter() { + return ConversationViewAdapter.this; + } + + @Override + public void rebindView(View view) { + bindView(view, false); + } } public ConversationViewAdapter(ControllableActivity controllableActivity, @@ -460,6 +506,7 @@ public class ConversationViewAdapter extends BaseAdapter { public int addItem(ConversationOverlayItem item) { final int pos = mItems.size(); + item.setPosition(pos); mItems.add(item); return pos; } @@ -495,12 +542,14 @@ public class ConversationViewAdapter extends BaseAdapter { return addItem(new SuperCollapsedBlockItem(start, end)); } - public int addBorder(boolean contiguous, boolean firstBorder) { - return addItem(new BorderItem(contiguous, firstBorder)); + public int addBorder( + boolean contiguous, boolean expanded, boolean firstBorder, boolean lastBorder) { + return addItem(new BorderItem(contiguous, expanded, firstBorder, lastBorder)); } - public BorderItem newBorderItem(boolean contiguous, boolean firstBorder) { - return new BorderItem(contiguous, firstBorder); + public BorderItem newBorderItem(boolean contiguous, boolean expanded) { + return new BorderItem( + contiguous, expanded, false /* firstBorder */, false /* lastBorder */); } public void replaceSuperCollapsedBlock(SuperCollapsedBlockItem blockToRemove, @@ -512,6 +561,11 @@ public class ConversationViewAdapter extends BaseAdapter { mItems.remove(pos); mItems.addAll(pos, replacements); + + // update position for all items + for (int i = 0, size = mItems.size(); i < size; i++) { + mItems.get(i).setPosition(i); + } } public void updateItemsForMessage(ConversationMessage message, |