Merge "Removing an icon from the date picker dialog." into honeycomb
diff --git a/res/drawable-hdpi/aizy_knob.png b/res/drawable-hdpi/aizy_knob.png
deleted file mode 100644
index 6940a94..0000000
--- a/res/drawable-hdpi/aizy_knob.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/aizy_label.9.png b/res/drawable-hdpi/aizy_label.9.png
deleted file mode 100644
index 1599037..0000000
--- a/res/drawable-hdpi/aizy_label.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/filter_selector_corner.png b/res/drawable-hdpi/filter_selector_corner.png
deleted file mode 100644
index 964dd75..0000000
--- a/res/drawable-hdpi/filter_selector_corner.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_list_picture.png b/res/drawable-hdpi/ic_contact_list_picture.png
deleted file mode 100644
index b96fbf4..0000000
--- a/res/drawable-hdpi/ic_contact_list_picture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_picture.png b/res/drawable-hdpi/ic_contact_picture.png
index 7c34f5c..e29e63a 100755
--- a/res/drawable-hdpi/ic_contact_picture.png
+++ b/res/drawable-hdpi/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_join.png b/res/drawable-hdpi/ic_join.png
deleted file mode 100644
index 8f140d4..0000000
--- a/res/drawable-hdpi/ic_join.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_cancel_holo_light.png b/res/drawable-hdpi/ic_menu_cancel_holo_light.png
deleted file mode 100644
index 259b90c..0000000
--- a/res/drawable-hdpi/ic_menu_cancel_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_item_activated_bg.9.png b/res/drawable-hdpi/list_item_activated_bg.9.png
deleted file mode 100644
index dd82c22..0000000
--- a/res/drawable-hdpi/list_item_activated_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/statusbox_widget_holo_light.9.png b/res/drawable-hdpi/statusbox_widget_holo_light.9.png
deleted file mode 100644
index 383aab8..0000000
--- a/res/drawable-hdpi/statusbox_widget_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/aizy_knob.png b/res/drawable-mdpi/aizy_knob.png
deleted file mode 100644
index daa8242..0000000
--- a/res/drawable-mdpi/aizy_knob.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/aizy_label.9.png b/res/drawable-mdpi/aizy_label.9.png
deleted file mode 100644
index 695b000..0000000
--- a/res/drawable-mdpi/aizy_label.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/filter_selector_corner.png b/res/drawable-mdpi/filter_selector_corner.png
deleted file mode 100644
index 964dd75..0000000
--- a/res/drawable-mdpi/filter_selector_corner.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_list_picture.png b/res/drawable-mdpi/ic_contact_list_picture.png
deleted file mode 100644
index f8aa4ba..0000000
--- a/res/drawable-mdpi/ic_contact_list_picture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_picture.png b/res/drawable-mdpi/ic_contact_picture.png
index 3a338e8..faa3dc0 100644
--- a/res/drawable-mdpi/ic_contact_picture.png
+++ b/res/drawable-mdpi/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_join.png b/res/drawable-mdpi/ic_join.png
deleted file mode 100644
index 177a582..0000000
--- a/res/drawable-mdpi/ic_join.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_cancel_holo_light.png b/res/drawable-mdpi/ic_menu_cancel_holo_light.png
deleted file mode 100644
index d3bdc37..0000000
--- a/res/drawable-mdpi/ic_menu_cancel_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_item_activated_bg.9.png b/res/drawable-mdpi/list_item_activated_bg.9.png
deleted file mode 100644
index dd82c22..0000000
--- a/res/drawable-mdpi/list_item_activated_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/statusbox_widget_holo_light.9.png b/res/drawable-mdpi/statusbox_widget_holo_light.9.png
deleted file mode 100644
index 00c6ba5..0000000
--- a/res/drawable-mdpi/statusbox_widget_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/group_membership_list_item.xml b/res/layout/group_membership_list_item.xml
new file mode 100644
index 0000000..1e4f049
--- /dev/null
+++ b/res/layout/group_membership_list_item.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="48dip"
+    android:textAppearance="?android:attr/textAppearanceMedium"
+    android:gravity="center_vertical"
+    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
+    android:paddingLeft="6dip"
+    android:paddingRight="6dip"
+/>
diff --git a/res/layout/search_header.xml b/res/layout/search_header.xml
index 1eaa4e0..ab8ec53 100644
--- a/res/layout/search_header.xml
+++ b/res/layout/search_header.xml
@@ -34,6 +34,7 @@
         android:id="@+id/progress"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_toRightOf="@id/totalContactsText"
         style="?android:attr/progressBarStyleSmall"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b0dffca..d09904a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -307,8 +307,8 @@
         <item quantity="other"><xliff:g id="count">%d</xliff:g> contacts with phone numbers</item>
     </plurals>
 
-    <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected -->
-    <string name="listTotalPhoneContactsZero">No visible contacts with phone numbers</string>
+    <!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
+    <string name="listTotalPhoneContactsZero">No contacts with phone numbers</string>
 
     <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" not selected -->
     <plurals name="listTotalAllContacts">
@@ -316,8 +316,17 @@
         <item quantity="other"><xliff:g id="count">%d</xliff:g> contacts</item>
     </plurals>
 
-    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "Only contacts with phones" not selected -->
-    <string name="listTotalAllContactsZero">No visible contacts</string>
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "All contacts" is selected  [CHAR LIMIT=64]-->
+    <string name="listTotalAllContactsZero">No contacts</string>
+
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "Custom" is selected  [CHAR LIMIT=64]-->
+    <string name="listTotalAllContactsZeroCustom">No visible contacts</string>
+
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when starred contact list is selected  [CHAR LIMIT=64]-->
+    <string name="listTotalAllContactsZeroStarred">No starred contacts</string>
+
+    <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when a group or account is selected  [CHAR LIMIT=64]-->
+    <string name="listTotalAllContactsZeroGroup">No contacts in <xliff:g id="name" example="Friends">%s</xliff:g></string>
 
     <!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected -->
     <plurals name="listFoundAllContacts">
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 907edd3..4efc43f 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -54,6 +54,9 @@
     private static final String KEY_ACTION_CODE = "actionCode";
     private static final int DEFAULT_DIRECTORY_RESULT_LIMIT = 20;
 
+    // Delay to allow the UI to settle before making search view visible
+    private static final int FOCUS_DELAY = 200;
+
     private ContactsIntentResolver mIntentResolver;
     protected ContactEntryListFragment<?> mListFragment;
 
@@ -116,13 +119,13 @@
             // at this point.  If search view were visible, it would always grabs focus
             // because it is the first focusable widget in the window.
             mSearchView.setVisibility(View.INVISIBLE);
-            mSearchView.post(new Runnable() {
+            mSearchView.postDelayed(new Runnable() {
 
                 @Override
                 public void run() {
                     mSearchView.setVisibility(View.VISIBLE);
                 }
-            });
+            }, FOCUS_DELAY);
         }
 
         Button cancel = (Button) findViewById(R.id.cancel);
diff --git a/src/com/android/contacts/editor/GroupMembershipView.java b/src/com/android/contacts/editor/GroupMembershipView.java
index c0b3644..8845aa3 100644
--- a/src/com/android/contacts/editor/GroupMembershipView.java
+++ b/src/com/android/contacts/editor/GroupMembershipView.java
@@ -203,7 +203,7 @@
         }
 
         mAdapter = new ArrayAdapter<GroupSelectionItem>(
-                getContext(), android.R.layout.simple_list_item_multiple_choice);
+                getContext(), R.layout.group_membership_list_item);
 
         mGroupMetaData.moveToPosition(-1);
         while (mGroupMetaData.moveToNext()) {
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index e61232a..e3f5e1c 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -760,7 +760,7 @@
     protected void configurePhotoLoader() {
         if (isPhotoLoaderEnabled() && mContext != null) {
             if (mPhotoLoader == null) {
-                mPhotoLoader = new ContactPhotoLoader(mContext, R.drawable.ic_contact_list_picture);
+                mPhotoLoader = new ContactPhotoLoader(mContext, R.drawable.ic_contact_picture);
             }
             if (mListView != null) {
                 mListView.setOnScrollListener(this);
@@ -892,17 +892,6 @@
         }
     }
 
-    // TODO: fix PluralRules to handle zero correctly and use Resources.getQuantityText directly
-    public String getQuantityText(int count, int zeroResourceId, int pluralResourceId) {
-        if (count == 0) {
-            return mContext.getString(zeroResourceId);
-        } else {
-            String format = mContext.getResources()
-                    .getQuantityText(pluralResourceId, count).toString();
-            return String.format(format, count);
-        }
-    }
-
     protected void setEmptyText(int resourceId) {
         TextView empty = (TextView) getEmptyView().findViewById(R.id.emptyText);
         empty.setText(mContext.getText(resourceId));
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
index 5cb96b4..c53859b 100644
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ b/src/com/android/contacts/list/ContactListFilter.java
@@ -43,6 +43,7 @@
     private static final String KEY_GROUP_ID = "filter.groupId";
     private static final String KEY_GROUP_SOURCE_ID = "filter.groupSourceId";
     private static final String KEY_GROUP_READ_ONLY = "filter.groupReadOnly";
+    private static final String KEY_GROUP_TITLE = "filter.groupTitle";
 
     public int filterType;
     public String accountType;
@@ -177,6 +178,7 @@
             .putLong(KEY_GROUP_ID, filter == null ? -1 : filter.groupId)
             .putString(KEY_GROUP_SOURCE_ID, filter == null ? null : filter.groupSourceId)
             .putBoolean(KEY_GROUP_READ_ONLY, filter == null ? false : filter.groupReadOnly)
+            .putString(KEY_GROUP_TITLE, filter == null ? null : filter.title)
             .apply();
     }
 
@@ -192,6 +194,7 @@
         filter.groupId = prefs.getLong(KEY_GROUP_ID, -1);
         filter.groupSourceId = prefs.getString(KEY_GROUP_SOURCE_ID, null);
         filter.groupReadOnly = prefs.getBoolean(KEY_GROUP_READ_ONLY, false);
+        filter.title = prefs.getString(KEY_GROUP_TITLE, "group");
         return filter;
     }
 
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 7b04562..f95c4af 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -95,15 +95,38 @@
     protected void showCount(int partitionIndex, Cursor data) {
         if (!isSearchMode() && data != null) {
             int count = data.getCount();
-            // TODO
-            // if (contactsListActivity.mDisplayOnlyPhones) {
-            // text = contactsListActivity.getQuantityText(count,
-            // R.string.listTotalPhoneContactsZero,
-            // R.plurals.listTotalPhoneContacts);
-            TextView textView = (TextView)mCounterHeaderView.findViewById(R.id.totalContactsText);
-            String text = getQuantityText(count, R.string.listTotalAllContactsZero,
-                    R.plurals.listTotalAllContacts);
-            textView.setText(text);
+            TextView textView = (TextView) mCounterHeaderView.findViewById(R.id.totalContactsText);
+            if (count != 0) {
+                String format = getResources().getQuantityText(
+                        R.plurals.listTotalAllContacts, count).toString();
+                textView.setText(String.format(format, count));
+            } else {
+                ContactListFilter filter = getFilter();
+                int filterType = filter != null ? filter.filterType
+                        : ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
+                switch (filterType) {
+                    case ContactListFilter.FILTER_TYPE_ACCOUNT:
+                        textView.setText(getString(
+                                R.string.listTotalAllContactsZeroGroup, filter.accountName));
+                        break;
+                    case ContactListFilter.FILTER_TYPE_GROUP:
+                        textView.setText(
+                                getString(R.string.listTotalAllContactsZeroGroup, filter.title));
+                        break;
+                    case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
+                        textView.setText(R.string.listTotalPhoneContactsZero);
+                        break;
+                    case ContactListFilter.FILTER_TYPE_STARRED:
+                        textView.setText(R.string.listTotalAllContactsZeroStarred);
+                        break;
+                    case ContactListFilter.FILTER_TYPE_CUSTOM:
+                        textView.setText(R.string.listTotalAllContactsZeroCustom);
+                        break;
+                    default:
+                        textView.setText(R.string.listTotalAllContactsZero);
+                        break;
+                }
+            }
         } else {
             ContactListAdapter adapter = getAdapter();
             if (adapter == null) {