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);