Merge "Color swatches for recent" into jb-ub-mail
diff --git a/res/layout/account_switch_spinner_dropdown_folder.xml b/res/layout/account_switch_spinner_dropdown_folder.xml
new file mode 100644
index 0000000..fc72903
--- /dev/null
+++ b/res/layout/account_switch_spinner_dropdown_folder.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 Google Inc.
+     Licensed to The Android Open Source Project.
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+    <View android:id="@+id/account_spinner_color"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_height="@dimen/color_block_height"
+        android:layout_width="@dimen/color_block_width"/>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="?android:attr/spinnerDropDownItemStyle"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="@dimen/account_dropdown_item_height"
+    android:gravity="center_horizontal">
+    <RelativeLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:layout_centerVertical="true"
+        android:layout_alignParentLeft="true">
+        <!-- Something is strange here. Gmail1 allows for two-line label names while Gmail2 does
+        not. TODO(viki): Fix. -->
+        <TextView
+            android:id="@+id/account_spinner_first"
+            android:singleLine="true"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:ellipsize="end"
+            style="@android:style/TextAppearance.Holo.Widget.ActionBar.Title" />
+        <TextView
+            android:id="@+id/account_spinner_second"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:ellipsize="end"
+            android:layout_below="@id/account_spinner_first"
+            style="@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle" />
+    </RelativeLayout>
+    <TextView
+        android:id="@+id/account_spinner_unread_count"
+        style="@style/UnreadCount"
+        android:layout_centerVertical="true"
+        android:layout_alignParentRight="true"/>
+</RelativeLayout>
+</RelativeLayout>
diff --git a/src/com/android/mail/AccountSpinnerAdapter.java b/src/com/android/mail/AccountSpinnerAdapter.java
index bd2af07..d41dda2 100644
--- a/src/com/android/mail/AccountSpinnerAdapter.java
+++ b/src/com/android/mail/AccountSpinnerAdapter.java
@@ -318,7 +318,6 @@
         String bigText = "";
         // Shown in the second text view with smaller font.
         String smallText = "";
-        int color = 0;
         int unreadCount = 0;
         // Do not use view recycling in getDropDownView!!!
         //
@@ -338,15 +337,22 @@
             case TYPE_ACCOUNT:
                 view = mInflater.inflate(R.layout.account_switch_spinner_dropdown_item, null);
                 final Account account = getAccount(position);
+                View colorView = view.findViewById(R.id.account_spinner_color);
                 if (account == null) {
                     bigText = "";
                     smallText = "";
-                    color = 0;
                     unreadCount = 0;
+                    colorView.setVisibility(View.INVISIBLE);
                 } else {
                     bigText = account.settings.defaultInboxName;
                     smallText = account.name;
-                    color = account.color;
+                    final int color = account.color;
+                    if (color != 0) {
+                        colorView.setVisibility(View.VISIBLE);
+                        colorView.setBackgroundColor(color);
+                    } else {
+                        colorView.setVisibility(View.INVISIBLE);
+                    }
                     final Folder inbox = mFolderWatcher.get(account.settings.defaultInbox);
                     unreadCount = (inbox != null) ? inbox.unreadCount : 0;
                 }
@@ -357,10 +363,13 @@
                         .setText(getCurrentAccountName());
                 return view;
             case TYPE_FOLDER:
-                view = mInflater.inflate(R.layout.account_switch_spinner_dropdown_item, null);
+                view = mInflater.inflate(R.layout.account_switch_spinner_dropdown_folder, null);
                 final Folder folder = mRecentFolderList.get(getRecentOffset(position));
+                colorView = view.findViewById(R.id.account_spinner_color);
                 bigText = folder.name;
                 unreadCount = folder.unreadCount;
+                Folder.setFolderBlockColor(folder, colorView);
+                colorView.setVisibility(View.VISIBLE);
                 break;
             case TYPE_ALL_FOLDERS:
                 view = mInflater.inflate(R.layout.account_switch_spinner_dropdown_footer, null);
@@ -368,14 +377,6 @@
         }
         displayOrHide(view, R.id.account_spinner_first, bigText);
         displayOrHide(view, R.id.account_spinner_second, smallText);
-
-        final View colorView = view.findViewById(R.id.account_spinner_color);
-        if (color != 0) {
-            colorView.setVisibility(View.VISIBLE);
-            colorView.setBackgroundColor(color);
-        } else {
-            colorView.setVisibility(View.INVISIBLE);
-        }
         populateUnreadCountView(
                 (TextView) view.findViewById(R.id.account_spinner_unread_count),
                 unreadCount);