Merge "Fixing contact photo loading issues"
diff --git a/res/layout/navigation_bar.xml b/res/layout/navigation_bar.xml
index b2c8fa8..b52815c 100644
--- a/res/layout/navigation_bar.xml
+++ b/res/layout/navigation_bar.xml
@@ -46,13 +46,36 @@
                 android:id="@+id/filter_view"
                 android:layout_height="match_parent"
                 android:layout_width="wrap_content">
-                <TextView
-                    android:id="@+id/label"
+                <FrameLayout
                     android:layout_height="match_parent"
-                    android:layout_width="wrap_content"
-                    android:gravity="center_vertical"
-                    android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:ellipsize="end" />
+                    android:layout_width="wrap_content">
+                    <TextView
+                        android:id="@+id/label"
+                        android:layout_height="match_parent"
+                        android:layout_width="wrap_content"
+                        android:gravity="center_vertical"
+                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        android:ellipsize="end" />
+                    <LinearLayout
+                        android:id="@+id/group"
+                        android:layout_height="wrap_content"
+                        android:layout_width="wrap_content"
+                        android:orientation="vertical"
+                        android:layout_gravity="center_vertical">
+                        <TextView
+                            android:id="@+id/group_label"
+                            android:layout_height="wrap_content"
+                            android:layout_width="wrap_content"
+                            android:textAppearance="?android:attr/textAppearanceMedium"
+                            android:ellipsize="end" />
+                        <TextView
+                            android:id="@+id/account_label"
+                            android:layout_height="wrap_content"
+                            android:layout_width="wrap_content"
+                            android:textAppearance="?android:attr/textAppearanceSmall"
+                            android:ellipsize="end" />
+                    </LinearLayout>
+                </FrameLayout>
             </view>
         </FrameLayout>
 
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 89c4eaa..a874a7f 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -348,7 +348,7 @@
                 view = (ContactListFilterView) mLayoutInflater.inflate(
                         R.layout.filter_spinner_item, parent, false);
             }
-            view.setGroupsIndented(mAccountCount > 1);
+            view.setMultipleAccounts(mAccountCount > 1);
             view.setContactListFilter(mFilters.valueAt(position));
             view.bindView(true);
             return view;
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index 958fa10..e065e91 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -33,8 +33,11 @@
     private ImageView mIcon;
     private TextView mLabel;
     private TextView mIndentedLabel;
+    private View mGroupView;
     private ContactListFilter mFilter;
-    private boolean mGroupsIndented;
+    private boolean mMultipleAccounts;
+    private TextView mGroupLabel;
+    private TextView mAccountLabel;
 
     public ContactListFilterView(Context context) {
         super(context);
@@ -52,8 +55,8 @@
         return mFilter;
     }
 
-    public void setGroupsIndented(boolean flag) {
-        this.mGroupsIndented = flag;
+    public void setMultipleAccounts(boolean flag) {
+        this.mMultipleAccounts = flag;
     }
 
     public void bindView(boolean dropdown) {
@@ -61,6 +64,9 @@
             mIcon = (ImageView) findViewById(R.id.icon);
             mLabel = (TextView) findViewById(R.id.label);
             mIndentedLabel = (TextView) findViewById(R.id.indented_label);
+            mGroupView = findViewById(R.id.group);
+            mGroupLabel = (TextView) findViewById(R.id.group_label);
+            mAccountLabel = (TextView) findViewById(R.id.account_label);
         }
 
         if (mFilter == null) {
@@ -69,6 +75,16 @@
             return;
         }
 
+        if (!dropdown) {
+            if (mFilter.filterType == ContactListFilter.FILTER_TYPE_GROUP && mMultipleAccounts) {
+                mLabel.setVisibility(View.GONE);
+                mGroupView.setVisibility(View.VISIBLE);
+            } else {
+                mLabel.setVisibility(View.VISIBLE);
+                mGroupView.setVisibility(View.GONE);
+            }
+        }
+
         switch (mFilter.filterType) {
             case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
                 bindView(R.drawable.ic_contact_list_filter_all,
@@ -109,16 +125,23 @@
                 if (mIcon != null) {
                     mIcon.setVisibility(View.INVISIBLE);
                 }
-                if (dropdown && mGroupsIndented) {
-                    mLabel.setVisibility(View.GONE);
-                    mIndentedLabel.setText(mFilter.title);
-                    mIndentedLabel.setVisibility(View.VISIBLE);
-                } else {
-                    mLabel.setText(mFilter.title);
-                    mLabel.setVisibility(View.VISIBLE);
-                    if (dropdown) {
+                if (dropdown) {
+                    if (mMultipleAccounts) {
+                        mLabel.setVisibility(View.GONE);
+                        mIndentedLabel.setText(mFilter.title);
+                        mIndentedLabel.setVisibility(View.VISIBLE);
+                    } else {
+                        mLabel.setText(mFilter.title);
+                        mLabel.setVisibility(View.VISIBLE);
                         mIndentedLabel.setVisibility(View.GONE);
                     }
+                } else {
+                    if (mMultipleAccounts) {
+                        mGroupLabel.setText(mFilter.title);
+                        mAccountLabel.setText(mFilter.accountName);
+                    } else {
+                        mLabel.setText(mFilter.title);
+                    }
                 }
                 break;
             }