Merge "Use the older way to cope with onInvalidSelection()"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index af87ffd..113df61 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -360,6 +360,9 @@
     <!-- Displayed at the top of the contacts showing the account filter selected  [CHAR LIMIT=64] -->
     <string name="listAllContactsInAccount">Contacts in <xliff:g id="name" example="abc@gmail.com">%s</xliff:g></string>
 
+    <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=64] -->
+    <string name="listSingleContact">Single contact</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">
         <item quantity="one">1 found</item>
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 19964a1..a03f83f 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -1026,11 +1026,18 @@
 
         @Override
         public void onInvalidSelection() {
-            Toast.makeText(PeopleActivity.this, R.string.toast_displaying_all_contacts,
-                    Toast.LENGTH_LONG).show();
-            ContactListFilter filter = ContactListFilter.createFilterWithType(
-                    ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
-            mAllFragment.setFilter(filter);
+            ContactListFilter filter;
+            ContactListFilter currentFilter = mAllFragment.getFilter();
+            if (currentFilter != null
+                    && currentFilter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+                filter = ContactListFilter.createFilterWithType(
+                        ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
+                mAllFragment.setFilter(filter);
+            } else {
+                filter = ContactListFilter.createFilterWithType(
+                        ContactListFilter.FILTER_TYPE_SINGLE_CONTACT);
+                mAllFragment.setFilter(filter, false);
+            }
             mContactListFilterController.setContactListFilter(filter, true);
         }
     }
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index ca07516..123ef0e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -125,11 +125,19 @@
         if (mAccountFilterHeaderView == null) {
             return; // Before onCreateView -- just ignore it.
         }
-        if (filter != null && filter.filterType != ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS &&
-                !isSearchMode() && filter.filterType != ContactListFilter.FILTER_TYPE_CUSTOM) {
-            mAccountFilterHeaderContainer.setVisibility(View.VISIBLE);
-            mAccountFilterHeaderView.setText(getContext().getString(
-                    R.string.listAllContactsInAccount, filter.accountName));
+        if (filter != null && !isSearchMode()) {
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+                mAccountFilterHeaderContainer.setVisibility(View.VISIBLE);
+                mAccountFilterHeaderView.setText(getContext().getString(
+                        R.string.listSingleContact));
+            } else if (filter.filterType != ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS
+                && filter.filterType != ContactListFilter.FILTER_TYPE_CUSTOM) {
+                mAccountFilterHeaderContainer.setVisibility(View.VISIBLE);
+                mAccountFilterHeaderView.setText(getContext().getString(
+                        R.string.listAllContactsInAccount, filter.accountName));
+            } else {
+                mAccountFilterHeaderContainer.setVisibility(View.GONE);
+            }
         } else {
             mAccountFilterHeaderContainer.setVisibility(View.GONE);
         }