Merge "Cleaner implementation; use resource" into jb-ub-mail
diff --git a/res/values/constants.xml b/res/values/constants.xml
index ccf4f44..0b255ed 100644
--- a/res/values/constants.xml
+++ b/res/values/constants.xml
@@ -66,4 +66,7 @@
 
     <!-- Number of decoded contact photo bitmaps retained in an LRU cache -->
     <integer name="config_image_cache_max_bitmaps">24</integer>
+
+    <!-- Whether to display folder colors in the widget -->
+    <bool name="display_folder_colors_in_widget">false</bool>
 </resources>
diff --git a/src/com/android/mail/widget/WidgetConversationViewBuilder.java b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
index 89b5c7a..3fe6d23 100644
--- a/src/com/android/mail/widget/WidgetConversationViewBuilder.java
+++ b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
@@ -20,6 +20,7 @@
 import com.android.mail.providers.Account;
 import com.android.mail.providers.Folder;
 import com.android.mail.ui.FolderDisplayer;
+import com.android.mail.widget.WidgetConversationViewBuilder.WidgetFolderDisplayer;
 
 import java.util.Map;
 
@@ -55,6 +56,7 @@
     private static Bitmap ATTACHMENT;
 
     private final Context mContext;
+    private WidgetFolderDisplayer mFolderDisplayer;
 
     /**
      * Label Displayer for Widget
@@ -220,6 +222,11 @@
             remoteViews.setViewVisibility(R.id.widget_unread_background, View.GONE);
             remoteViews.setViewVisibility(R.id.widget_read_background, View.VISIBLE);
         }
+        if (mContext.getResources().getBoolean(R.bool.display_folder_colors_in_widget)) {
+            mFolderDisplayer = new WidgetFolderDisplayer(mContext);
+            mFolderDisplayer.loadConversationFolders(folders, currentFolder);
+            mFolderDisplayer.displayFolders(remoteViews);
+        }
 
         return remoteViews;
     }
diff --git a/src/com/android/mail/widget/WidgetService.java b/src/com/android/mail/widget/WidgetService.java
index eb531ab..23dc6c7 100644
--- a/src/com/android/mail/widget/WidgetService.java
+++ b/src/com/android/mail/widget/WidgetService.java
@@ -51,10 +51,7 @@
 
     @Override
     public RemoteViewsFactory onGetViewFactory(Intent intent) {
-        Context context = getApplicationContext();
-        Account account = Account.newinstance(intent.getStringExtra(WidgetProvider.EXTRA_ACCOUNT));
-        return new MailFactory(context, intent, this, new WidgetConversationViewBuilder(context,
-                account), account);
+        return new MailFactory(getApplicationContext(), intent, this);
     }
 
 
@@ -88,14 +85,14 @@
         private WidgetService mService;
         private int mSenderFormatVersion;
 
-        public MailFactory(Context context, Intent intent, WidgetService service,
-                WidgetConversationViewBuilder builder, Account account) {
+        public MailFactory(Context context, Intent intent, WidgetService service) {
             mContext = context;
             mAppWidgetId = intent.getIntExtra(
                     AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
-            mAccount = account;
+            mAccount = Account.newinstance(intent.getStringExtra(WidgetProvider.EXTRA_ACCOUNT));
             mFolder = new Folder(intent.getStringExtra(WidgetProvider.EXTRA_FOLDER));
-            mWidgetConversationViewBuilder = builder;
+            mWidgetConversationViewBuilder = new WidgetConversationViewBuilder(context,
+                    mAccount);
             mResolver = context.getContentResolver();
             mService = service;
         }