Merge "New assets for action bar star"
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 5a32d74..0c0841c 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -211,6 +211,10 @@
         return mSearchMode;
     }
 
+    public boolean shouldShowSearchResult() {
+        return mSearchMode && !TextUtils.isEmpty(mQueryString);
+    }
+
     public void setSearchMode(boolean flag) {
         if (mSearchMode != flag) {
             mSearchMode = flag;
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 80bd5c1..13ce317 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -392,10 +392,14 @@
         if (fragment instanceof DialpadFragment) {
             mDialpadFragment = (DialpadFragment) fragment;
             mDialpadFragment.setListener(mDialpadListener);
-            mDialpadFragment.onVisibilityChanged(currentPosition == TAB_INDEX_DIALER);
+            if (currentPosition == TAB_INDEX_DIALER) {
+                mDialpadFragment.onVisibilityChanged(true);
+            }
         } else if (fragment instanceof CallLogFragment) {
             mCallLogFragment = (CallLogFragment) fragment;
-            mCallLogFragment.onVisibilityChanged(currentPosition == TAB_INDEX_CALL_LOG);
+            if (currentPosition == TAB_INDEX_CALL_LOG) {
+                mCallLogFragment.onVisibilityChanged(true);
+            }
         } else if (fragment instanceof ContactTileListFragment) {
             mStrequentFragment = (ContactTileListFragment) fragment;
             mStrequentFragment.enableQuickContact(false);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index fc9879a..cab8afd 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -867,11 +867,11 @@
     }
 
     private void configureContactListFragment() {
-        final boolean searchMode = mActionBarAdapter.isSearchMode();
-        mAllFragment.setSearchMode(searchMode);
+        final boolean showSearchResult = mActionBarAdapter.shouldShowSearchResult();
+        mAllFragment.setSearchMode(showSearchResult);
 
         final boolean useTwoPane = PhoneCapabilityTester.isUsingTwoPanes(this);
-        mAllFragment.setVisibleScrollbarEnabled(!searchMode);
+        mAllFragment.setVisibleScrollbarEnabled(!showSearchResult);
         mAllFragment.setVerticalScrollbarPosition(
                 useTwoPane
                         ? View.SCROLLBAR_POSITION_LEFT
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index a2feff8..734dbae 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -404,7 +404,10 @@
             mAutoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    SuggestedMember member = mAutoCompleteAdapter.getItem(position);
+                    SuggestedMember member = (SuggestedMember) view.getTag();
+                    if (member == null) {
+                        return; // just in case
+                    }
                     loadMemberToAddToGroup(member.getRawContactId(),
                             String.valueOf(member.getContactId()));
 
diff --git a/src/com/android/contacts/group/SuggestedMemberListAdapter.java b/src/com/android/contacts/group/SuggestedMemberListAdapter.java
index f671b65..bc8055a 100644
--- a/src/com/android/contacts/group/SuggestedMemberListAdapter.java
+++ b/src/com/android/contacts/group/SuggestedMemberListAdapter.java
@@ -144,11 +144,11 @@
         byte[] byteArray = member.getPhotoByteArray();
         if (byteArray == null) {
             icon.setImageResource(R.drawable.ic_contact_picture);
-        }
-        else {
+        } else {
             Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
             icon.setImageBitmap(bitmap);
         }
+        result.setTag(member);
         return result;
     }
 
diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index e75be26..ba16c17 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -457,10 +457,6 @@
         if (!mEmptyListEnabled) {
             return false;
         } else if (isSearchMode()) {
-            // TODO Do we really need this?  DefaultContactListAdapter overrides it and always
-            // return false, as it returns all contacts if in the search mode and the query is
-            // empty.  If there's no places relying on this behavior, we can just return false
-            // here.
             return TextUtils.isEmpty(getQueryString());
         } else if (mLoading) {
             // We don't want the empty state to show when loading.
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index f081921..89de966 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -66,15 +66,11 @@
             }
             query = query.trim();
             if (TextUtils.isEmpty(query)) {
-                // Special case: if the query string is empty, show all contacts, regardless of the
-                // current filter.
-                // (We can't use the FILTER_URI for this, as the contacts provider would return
-                // an empty cursor if the query is empty.)
-                final ContactListFilter allFilter = ContactListFilter.createFilterWithType(
-                        ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
-                configureUri(loader, directoryId, allFilter);
-                configureProjection(loader, directoryId, allFilter);
-                configureSelection(loader, directoryId, allFilter);
+                // Regardless of the directory, we don't want anything returned,
+                // so let's just send a "nothing" query to the local directory.
+                loader.setUri(Contacts.CONTENT_URI);
+                loader.setProjection(PROJECTION_CONTACT);
+                loader.setSelection("0");
             } else {
                 Builder builder = Contacts.CONTENT_FILTER_URI.buildUpon();
                 builder.appendPath(query);      // Builder will encode the query
@@ -256,16 +252,4 @@
         return prefs.getBoolean(ContactsPreferences.PREF_DISPLAY_ONLY_PHONES,
                 ContactsPreferences.PREF_DISPLAY_ONLY_PHONES_DEFAULT);
     }
-
-    @Override
-    public boolean isEmpty() {
-        // ContactEntryListAdapter.isEmpty() returns false when in the search mode && the query is
-        // empty.  Here, we want to return all contacts in this case, override it and make it
-        // always return false.  See the TODO there -- we may not need this method entirely.
-        if (isSearchMode()) {
-            return false;
-        } else {
-            return super.isEmpty();
-        }
-    }
 }