Disable multi select for directory contacts on search.

BUG 22821481

Change-Id: Iff796f0bd6a2f5ae7ad986138c647d9ac8bc3ab1
diff --git a/src/com/android/contacts/list/MultiSelectContactsListFragment.java b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
index a58a8ee..bbb0d84 100644
--- a/src/com/android/contacts/list/MultiSelectContactsListFragment.java
+++ b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
@@ -23,6 +23,7 @@
 
 import android.net.Uri;
 import android.os.Bundle;
+import android.provider.ContactsContract;
 import android.text.TextUtils;
 
 import java.util.TreeSet;
@@ -115,7 +116,9 @@
     protected boolean onItemLongClick(int position, long id) {
         final int previouslySelectedCount = getAdapter().getSelectedContactIds().size();
         final Uri uri = getAdapter().getContactUri(position);
-        if (uri != null && (position > 0 || !getAdapter().hasProfile())) {
+        final int partition = getAdapter().getPartitionForPosition(position);
+        if (uri != null && (partition == ContactsContract.Directory.DEFAULT
+                && (position > 0 || !getAdapter().hasProfile()))) {
             final String contactId = uri.getLastPathSegment();
             if (!TextUtils.isEmpty(contactId)) {
                 if (mCheckBoxListListener != null) {
diff --git a/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java b/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
index 7c6f7bc..3ba86db 100644
--- a/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
+++ b/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
@@ -21,6 +21,7 @@
 
 import android.content.Context;
 import android.database.Cursor;
+import android.provider.ContactsContract;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.CheckBox;
@@ -108,17 +109,19 @@
     @Override
     protected void bindView(View itemView, int partition, Cursor cursor, int position) {
         super.bindView(itemView, partition, cursor, position);
-        final ContactListItemView view = (ContactListItemView)itemView;
-        bindCheckBox(view, cursor, position);
+        final ContactListItemView view = (ContactListItemView) itemView;
+        bindCheckBox(view, cursor, position, partition == ContactsContract.Directory.DEFAULT);
     }
 
-    private void bindCheckBox(ContactListItemView view, Cursor cursor, int position) {
-        // Disable clicking on the first entry when showing check boxes. We do this by
-        // telling the view to handle clicking itself.
-        view.setClickable(position == 0 && hasProfile() && mDisplayCheckBoxes);
+    private void bindCheckBox(ContactListItemView view, Cursor cursor, int position,
+            boolean isLocalDirectory) {
+        // Disable clicking on the ME profile and all contacts from remote directories
+        // when showing check boxes. We do this by telling the view to handle clicking itself.
+        view.setClickable((position == 0 && hasProfile() || !isLocalDirectory)
+                && mDisplayCheckBoxes);
         // Only show checkboxes if mDisplayCheckBoxes is enabled. Also, never show the
-        // checkbox for the Me profile entry.
-        if (position == 0 && hasProfile() || !mDisplayCheckBoxes) {
+        // checkbox for the Me profile entry and other directory contacts except local directory.
+        if (position == 0 && hasProfile() || !mDisplayCheckBoxes || !isLocalDirectory) {
             view.hideCheckBox();
             return;
         }