Make sure we update style spans for senders when there are config changes.

Need to make sure to clear these static styles out and reset them
based on new font sizes so accessiblity can enlarge the text.
Keeping them static means we can reuse them with just a wrapper, which
is a nice time saver.

Change-Id: Ibb5a4082606c5ea5f511017ef981bf7c2be812c7
diff --git a/res/layout/conversation_item_view_normal.xml b/res/layout/conversation_item_view_normal.xml
index 48a7d90..89faa36 100644
--- a/res/layout/conversation_item_view_normal.xml
+++ b/res/layout/conversation_item_view_normal.xml
@@ -35,7 +35,7 @@
             android:layout_width="24dp"
             android:layout_height="24dp"
             />
-        <com.android.mail.browse.SendersView
+        <TextView
             android:id="@+id/senders"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/res/layout/conversation_item_view_wide.xml b/res/layout/conversation_item_view_wide.xml
index d272602..8fab037 100644
--- a/res/layout/conversation_item_view_wide.xml
+++ b/res/layout/conversation_item_view_wide.xml
@@ -35,7 +35,7 @@
         android:layout_marginRight="16dip"
         android:layout_gravity="center_vertical"
         android:src="@drawable/btn_check_on_normal_holo_light" />
-    <com.android.mail.browse.SendersView
+    <TextView
         android:id="@+id/senders"
         android:layout_width="224dip"
         android:layout_height="wrap_content"
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index cf64c90..fa7b4a8 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -565,7 +565,7 @@
                     mHeader.conversation.conversationInfo, mHeader.messageInfoString.toString(),
                     maxChars);
         } else {
-            mCoordinates.sendersView.formatSenders(mHeader, isUnread, mMode, getContext());
+            SendersView.formatSenders(mHeader, getContext());
         }
 
         pauseTimer(PERF_TAG_CALCULATE_SENDER_SUBJECT);
@@ -938,7 +938,7 @@
         // Old style senders; apply text colors/ sizes/ styling.
         if (mHeader.senderFragments.size() > 0) {
             sPaint.setTextSize(mCoordinates.sendersFontSize);
-            sPaint.setTypeface(mCoordinates.sendersView.getTypeface(isUnread));
+            sPaint.setTypeface(SendersView.getTypeface(isUnread));
             int sendersColor = getFontColor(isUnread ? sSendersTextColorUnread
                     : sSendersTextColorRead);
             sPaint.setColor(sendersColor);
diff --git a/src/com/android/mail/browse/ConversationItemViewCoordinates.java b/src/com/android/mail/browse/ConversationItemViewCoordinates.java
index 85097e5..95cdfaf 100644
--- a/src/com/android/mail/browse/ConversationItemViewCoordinates.java
+++ b/src/com/android/mail/browse/ConversationItemViewCoordinates.java
@@ -109,7 +109,7 @@
 
     // Minimum height of this view; used for animating.
     int minHeight;
-    SendersView sendersView;
+    TextView sendersView;
 
 
     // Cache to save Coordinates based on view width.
@@ -351,7 +351,7 @@
                 coordinates.showPersonalLevel = false;
             }
 
-            SendersView senders = (SendersView) view.findViewById(R.id.senders);
+            TextView senders = (TextView) view.findViewById(R.id.senders);
             coordinates.sendersView = senders;
             coordinates.sendersX = getX(senders);
             coordinates.sendersY = getY(senders);
diff --git a/src/com/android/mail/browse/SendersView.java b/src/com/android/mail/browse/SendersView.java
index e4ff155..af78bd1 100644
--- a/src/com/android/mail/browse/SendersView.java
+++ b/src/com/android/mail/browse/SendersView.java
@@ -17,7 +17,11 @@
 
 package com.android.mail.browse;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Typeface;
 import android.text.Html;
@@ -46,7 +50,7 @@
 
 import java.util.regex.Pattern;
 
-public class SendersView extends TextView {
+public class SendersView {
     public static final int DEFAULT_FORMATTING = 0;
     public static final int MERGED_FORMATTING = 1;
     private static final Integer DOES_NOT_EXIST = -5;
@@ -66,33 +70,24 @@
     private static String sMessageCountSpacerString;
     public static CharSequence sElidedString;
     private static Map<Integer, Integer> sPriorityToLength;
+    private static BroadcastReceiver sConfigurationChangedReceiver;
 
-    public SendersView(Context context) {
-        this(context, null);
-    }
-
-    public SendersView(Context context, AttributeSet attrs) {
-        this(context, attrs, -1);
-    }
-
-    public SendersView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    public Typeface getTypeface(boolean isUnread) {
+    public static Typeface getTypeface(boolean isUnread) {
         return isUnread ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT;
     }
 
-    public void formatSenders(ConversationItemViewModel header, boolean isUnread, int mode,
-            Context context) {
-        String senders = header.conversation.senders;
-        if (TextUtils.isEmpty(senders)) {
-            return;
-        }
-        formatDefault(header, senders, context);
-    }
-
     private static void getSenderResources(Context context) {
+        if (sConfigurationChangedReceiver == null) {
+            sConfigurationChangedReceiver = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    sDraftSingularString = null;
+                    getSenderResources(context);
+                }
+            };
+            context.registerReceiver(sConfigurationChangedReceiver, new IntentFilter(
+                    Intent.ACTION_CONFIGURATION_CHANGED));
+        }
         if (sDraftSingularString == null) {
             Resources res = context.getResources();
             sSendersSplitToken = res.getString(R.string.senders_split_token);
@@ -272,8 +267,8 @@
         return sMeString;
     }
 
-    private void formatDefault(ConversationItemViewModel header,
-            String sendersString, Context context) {
+    private static void formatDefault(ConversationItemViewModel header, String sendersString,
+            Context context) {
         getSenderResources(context);
         // Clear any existing sender fragments; we must re-make all of them.
         header.senderFragments.clear();
@@ -294,8 +289,12 @@
         generateSenderFragments(header, namesOnly);
     }
 
-    private void generateSenderFragments(ConversationItemViewModel header, String[] names) {
+    private static void generateSenderFragments(ConversationItemViewModel header, String[] names) {
         header.sendersText = TextUtils.join(Address.ADDRESS_DELIMETER + " ", names);
         header.addSenderFragment(0, header.sendersText.length(), getReadStyleSpan(), true);
     }
+
+    public static void formatSenders(ConversationItemViewModel header, Context context) {
+        formatDefault(header, header.conversation.senders, context);
+    }
 }