summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-10-01 01:00:21 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-10-01 01:00:22 +0000
commit2c9b5856575a036071198e69a64ee27bd5f9c441 (patch)
tree18150ad6fe9aab577c01fc61972bd62dac5a84bb /src
parent859822be95f6ff23ada95e3b93504da82b835082 (diff)
parent42b362587928704ea17b0a09a5e4e16037d14491 (diff)
downloadandroid_packages_apps_UnifiedEmail-2c9b5856575a036071198e69a64ee27bd5f9c441.tar.gz
android_packages_apps_UnifiedEmail-2c9b5856575a036071198e69a64ee27bd5f9c441.tar.bz2
android_packages_apps_UnifiedEmail-2c9b5856575a036071198e69a64ee27bd5f9c441.zip
Merge "Fix messageInfo styling" into ub-gmail-ur14-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/mail/browse/ConversationItemView.java38
-rw-r--r--src/com/android/mail/browse/SendersView.java83
2 files changed, 62 insertions, 59 deletions
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index b00e83dfa..a43b5f372 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -753,8 +753,6 @@ public class ConversationItemView extends View
updateBackground();
- mHeader.sendersDisplayText = new SpannableStringBuilder();
-
mHeader.hasDraftMessage = mHeader.conversation.numDrafts() > 0;
// Parse senders fragments.
@@ -1004,21 +1002,18 @@ public class ConversationItemView extends View
sPaint.setTextSize(mCoordinates.sendersFontSize);
sPaint.setTypeface(Typeface.DEFAULT);
- if (!mHeader.styledNames.isEmpty()) {
- final SpannableStringBuilder participantText = elideParticipants(mHeader.styledNames);
- layoutParticipantText(participantText);
- } else {
- // First pass to calculate width of each fragment.
- if (mSendersWidth < 0) {
- mSendersWidth = 0;
- }
+ // First pass to calculate width of each fragment.
+ if (mSendersWidth < 0) {
+ mSendersWidth = 0;
+ }
+ // sendersDisplayText is only set when preserveSendersText is true.
+ if (mHeader.preserveSendersText) {
mHeader.sendersDisplayLayout = new StaticLayout(mHeader.sendersDisplayText, sPaint,
mSendersWidth, Alignment.ALIGN_NORMAL, 1, 0, true);
- }
-
- if (mSendersWidth < 0) {
- mSendersWidth = 0;
+ } else {
+ final SpannableStringBuilder participantText = elideParticipants(mHeader.styledNames);
+ layoutParticipantText(participantText);
}
pauseTimer(PERF_TAG_CALCULATE_COORDINATES);
@@ -1051,7 +1046,7 @@ public class ConversationItemView extends View
}
final SpannableStringBuilder messageInfoString = mHeader.messageInfoString;
- if (messageInfoString.length() > 0) {
+ if (!TextUtils.isEmpty(messageInfoString)) {
CharacterStyle[] spans = messageInfoString.getSpans(0, messageInfoString.length(),
CharacterStyle.class);
// There is only 1 character style span; make sure we apply all the
@@ -1063,8 +1058,8 @@ public class ConversationItemView extends View
float messageInfoWidth = sPaint.measureText(messageInfoString.toString());
totalWidth += messageInfoWidth;
}
- SpannableString prevSender = null;
- SpannableString ellipsizedText;
+ SpannableString prevSender = null;
+ SpannableString ellipsizedText;
for (SpannableString sender : parts) {
// There may be null sender strings if there were dupes we had to remove.
if (sender == null) {
@@ -1082,17 +1077,16 @@ public class ConversationItemView extends View
// If there are already senders present in this string, we need to
// make sure we prepend the dividing token
if (SendersView.sElidedString.equals(sender.toString())) {
- prevSender = sender;
sender = copyStyles(spans, sElidedPaddingToken + sender + sElidedPaddingToken);
} else if (!skipToHeader && builder.length() > 0
&& (prevSender == null || !SendersView.sElidedString.equals(prevSender
.toString()))) {
- prevSender = sender;
sender = copyStyles(spans, sSendersSplitToken + sender);
} else {
- prevSender = sender;
skipToHeader = false;
}
+ prevSender = sender;
+
if (spans.length > 0) {
spans[0].updateDrawState(sPaint);
}
@@ -1120,7 +1114,9 @@ public class ConversationItemView extends View
builder.append(fragmentDisplayText);
}
mHeader.styledMessageInfoStringOffset = builder.length();
- builder.append(messageInfoString);
+ if (!TextUtils.isEmpty(messageInfoString)) {
+ builder.append(messageInfoString);
+ }
return builder;
}
diff --git a/src/com/android/mail/browse/SendersView.java b/src/com/android/mail/browse/SendersView.java
index 8b224961c..a78d37baf 100644
--- a/src/com/android/mail/browse/SendersView.java
+++ b/src/com/android/mail/browse/SendersView.java
@@ -24,9 +24,9 @@ import android.content.IntentFilter;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.support.v4.text.BidiFormatter;
-import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
+import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.CharacterStyle;
import android.text.style.TextAppearanceSpan;
@@ -146,8 +146,8 @@ public class SendersView {
SpannableStringBuilder messageInfo = new SpannableStringBuilder();
try {
- ConversationInfo conversationInfo = conv.conversationInfo;
- int sendingStatus = conv.sendingState;
+ final ConversationInfo conversationInfo = conv.conversationInfo;
+ final int sendingStatus = conv.sendingState;
boolean hasSenders = false;
// This covers the case where the sender is "me" and this is a draft
// message, which means this will only run once most of the time.
@@ -158,56 +158,48 @@ public class SendersView {
}
}
getSenderResources(context, resourceCachingRequired);
- int count = conversationInfo.messageCount;
- int draftCount = conversationInfo.draftCount;
+ final int count = conversationInfo.messageCount;
+ final int draftCount = conversationInfo.draftCount;
if (count > 1) {
- messageInfo.append(count + "");
+ appendMessageInfo(messageInfo, Integer.toString(count), CharacterStyle.wrap(
+ conv.read ? sMessageInfoReadStyleSpan : sMessageInfoUnreadStyleSpan),
+ false, conv.read);
}
- messageInfo.setSpan(CharacterStyle.wrap(
- conv.read ? sMessageInfoReadStyleSpan : sMessageInfoUnreadStyleSpan),
- 0, messageInfo.length(), 0);
+
+ boolean appendSplitToken = hasSenders || count > 1;
if (draftCount > 0) {
- // If we are showing a message count or any draft text and there
- // is at least 1 sender, prepend the sending state text with a
- // comma.
- if (hasSenders || count > 1) {
- messageInfo.append(sSendersSplitToken);
- }
- SpannableStringBuilder draftString = new SpannableStringBuilder();
+ final CharSequence draftText;
if (draftCount == 1) {
- draftString.append(sDraftSingularString);
+ draftText = sDraftSingularString;
} else {
- draftString.append(sDraftPluralString).append(
- String.format(sDraftCountFormatString, draftCount));
+ draftText = sDraftPluralString +
+ String.format(sDraftCountFormatString, draftCount);
}
- draftString.setSpan(CharacterStyle.wrap(sDraftsStyleSpan), 0,
- draftString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- messageInfo.append(draftString);
+
+ appendMessageInfo(messageInfo, draftText, sDraftsStyleSpan, appendSplitToken,
+ conv.read);
}
- boolean showState = sendingStatus == UIProvider.ConversationSendingState.SENDING ||
+ final boolean showState = sendingStatus == UIProvider.ConversationSendingState.SENDING ||
sendingStatus == UIProvider.ConversationSendingState.RETRYING ||
sendingStatus == UIProvider.ConversationSendingState.SEND_ERROR;
if (showState) {
- // If we are showing a message count or any draft text, prepend
- // the sending state text with a comma.
- if (count > 1 || draftCount > 0) {
- messageInfo.append(sSendersSplitToken);
- }
-
- SpannableStringBuilder stateSpan = new SpannableStringBuilder();
+ appendSplitToken |= draftCount > 0;
+ final CharSequence statusText;
+ final Object span;
if (sendingStatus == UIProvider.ConversationSendingState.SENDING) {
- stateSpan.append(sSendingString);
- stateSpan.setSpan(sSendingStyleSpan, 0, stateSpan.length(), 0);
+ statusText = sSendingString;
+ span = sSendingStyleSpan;
} else if (sendingStatus == UIProvider.ConversationSendingState.RETRYING) {
- stateSpan.append(sRetryingString);
- stateSpan.setSpan(sRetryingStyleSpan, 0, stateSpan.length(), 0);
- } else if (sendingStatus == UIProvider.ConversationSendingState.SEND_ERROR) {
- stateSpan.append(sFailedString);
- stateSpan.setSpan(sFailedStyleSpan, 0, stateSpan.length(), 0);
+ statusText = sRetryingString;
+ span = sRetryingStyleSpan;
+ } else {
+ statusText = sFailedString;
+ span = sFailedStyleSpan;
}
- messageInfo.append(stateSpan);
+
+ appendMessageInfo(messageInfo, statusText, span, appendSplitToken, conv.read);
}
// Prepend a space if we are showing other message info text.
@@ -223,6 +215,21 @@ public class SendersView {
return messageInfo;
}
+ private static void appendMessageInfo(SpannableStringBuilder sb, CharSequence text,
+ Object span, boolean appendSplitToken, boolean convRead) {
+ int startIndex = sb.length();
+ if (appendSplitToken) {
+ sb.append(sSendersSplitToken);
+ sb.setSpan(CharacterStyle.wrap(convRead ?
+ sMessageInfoReadStyleSpan : sMessageInfoUnreadStyleSpan),
+ startIndex, sb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+
+ startIndex = sb.length();
+ sb.append(text);
+ sb.setSpan(span, startIndex, sb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+
public static void format(Context context, ConversationInfo conversationInfo,
String messageInfo, int maxChars, ArrayList<SpannableString> styledSenders,
ArrayList<String> displayableSenderNames,