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;
}