Escape formatting version for widget senders.
Change-Id: Id03df2f61596cce854318e94d6d645ff241cee8b
diff --git a/src/com/android/mail/browse/SendersView.java b/src/com/android/mail/browse/SendersView.java
index 15712f5..8e13f18 100644
--- a/src/com/android/mail/browse/SendersView.java
+++ b/src/com/android/mail/browse/SendersView.java
@@ -42,7 +42,7 @@
public static final int MERGED_FORMATTING = 1;
public static String SENDERS_VERSION_SEPARATOR = "^**^";
CharacterStyle sNormalTextStyle = new StyleSpan(Typeface.NORMAL);
- private Pattern SENDERS_VERSION_SEPARATOR_PATTERN = Pattern.compile("\\^\\*\\*\\^");
+ public static Pattern SENDERS_VERSION_SEPARATOR_PATTERN = Pattern.compile("\\^\\*\\*\\^");
private int mFormatVersion = -1;
private ForegroundColorSpan sLightTextStyle;
private int DRAFT_TEXT_COLOR;
@@ -74,24 +74,15 @@
return;
}
Conversation conversation = header.conversation;
- String sendersString = "";
- String[] splits = TextUtils.split(conversation.senders, SENDERS_VERSION_SEPARATOR_PATTERN);
- if (splits == null || splits.length < 2) {
- mFormatVersion = DEFAULT_FORMATTING;
- sendersString = header.conversation.senders;
- } else {
- mFormatVersion = Integer.parseInt(splits[0]);
- // Format the rest of the senders string once the format version is
- // stripped.
- sendersString = splits[1];
- }
+ SendersInfo info = new SendersInfo(conversation.senders);
+ mFormatVersion = info.version;
switch (mFormatVersion) {
case MERGED_FORMATTING:
- formatMerged(header, sendersString, isUnread, mode);
+ formatMerged(header, info.text, isUnread, mode);
break;
case DEFAULT_FORMATTING:
default:
- formatDefault(header, sendersString);
+ formatDefault(header, info.text);
break;
}
}
@@ -179,4 +170,25 @@
DRAFT_TEXT_COLOR), true);
}
}
+
+ public static class SendersInfo {
+ public int version;
+ public String text;
+
+ public SendersInfo(String toParse) {
+ if (TextUtils.isEmpty(toParse)) {
+ version = 0;
+ text = "";
+ } else {
+ String[] splits = TextUtils.split(toParse, SENDERS_VERSION_SEPARATOR_PATTERN);
+ if (splits == null || splits.length < 2) {
+ version = SendersView.DEFAULT_FORMATTING;
+ text = toParse;
+ } else {
+ version = Integer.parseInt(splits[0]);
+ text = splits[1];
+ }
+ }
+ }
+ }
}
diff --git a/src/com/android/mail/widget/WidgetConversationViewBuilder.java b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
index 67f4fd0..59acd6e 100644
--- a/src/com/android/mail/widget/WidgetConversationViewBuilder.java
+++ b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
@@ -32,8 +32,6 @@
import android.view.View;
import android.widget.RemoteViews;
-import java.util.Map;
-
public class WidgetConversationViewBuilder {
// Static font sizes
private static int SENDERS_FONT_SIZE;
diff --git a/src/com/android/mail/widget/WidgetService.java b/src/com/android/mail/widget/WidgetService.java
index a34cf2b..bd50886 100644
--- a/src/com/android/mail/widget/WidgetService.java
+++ b/src/com/android/mail/widget/WidgetService.java
@@ -16,6 +16,7 @@
package com.android.mail.widget;
import com.android.mail.R;
+import com.android.mail.browse.SendersView;
import com.android.mail.providers.Account;
import com.android.mail.providers.Conversation;
import com.android.mail.providers.Folder;
@@ -82,6 +83,8 @@
private boolean mFolderInformationShown = false;
private ContentResolver mResolver;
private WidgetService mService;
+ private int mSenderFormatVersion;
+
public MailFactory(Context context, Intent intent, WidgetService service) {
mContext = context;
mAppWidgetId = intent.getIntExtra(
@@ -197,12 +200,20 @@
}
Conversation conversation = new Conversation(mConversationCursor);
+ SendersView.SendersInfo sendersInfo = new SendersView.SendersInfo(
+ conversation.senders);
+ mSenderFormatVersion = sendersInfo.version;
+ String sendersString = sendersInfo.text;
// Split the senders and status from the instructions.
SpannableStringBuilder senderBuilder = new SpannableStringBuilder();
SpannableStringBuilder statusBuilder = new SpannableStringBuilder();
- senderBuilder.append(conversation.senders != null ? conversation.senders : "");
- // TODO: (mindyp) create stylized sender text.
+ if (mSenderFormatVersion == SendersView.MERGED_FORMATTING) {
+ Utils.getStyledSenderSnippet(mContext, sendersString, senderBuilder,
+ statusBuilder, MAX_SENDERS_LENGTH, false, false, false);
+ } else {
+ senderBuilder.append(sendersString);
+ }
// Get styled date.
CharSequence date = DateUtils.getRelativeTimeSpanString(
mContext, conversation.dateMs);