Fixing filtering contacts by account
Change-Id: I7adb24049c5e78a478f337aa96439ae6d89659ef
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 3cf28c0..d74ffd3 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -85,8 +85,7 @@
protected void configureUri(CursorLoader loader, long directoryId, ContactListFilter filter) {
Uri uri = Contacts.CONTENT_URI;
if (filter != null) {
- if (filter.filterType == ContactListFilter.FILTER_TYPE_GROUP ||
- filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
+ if (filter.filterType == ContactListFilter.FILTER_TYPE_GROUP) {
uri = Data.CONTENT_URI;
} else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
String lookupKey = getSelectedContactLookupKey();
@@ -116,8 +115,7 @@
protected void configureProjection(
CursorLoader loader, long directoryId, ContactListFilter filter) {
- if (filter != null && (filter.groupId != 0
- || filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT)) {
+ if (filter != null && filter.filterType == ContactListFilter.FILTER_TYPE_GROUP) {
loader.setProjection(PROJECTION_DATA);
} else {
loader.setProjection(PROJECTION_CONTACT);
@@ -163,24 +161,23 @@
}
break;
}
- case ContactListFilter.FILTER_TYPE_ACCOUNT:
+ case ContactListFilter.FILTER_TYPE_ACCOUNT: {
+ // TODO: avoid the use of private API
+ selection.append(
+ Contacts._ID + " IN ("
+ + "SELECT DISTINCT " + RawContacts.CONTACT_ID
+ + " FROM raw_contacts"
+ + " WHERE " + RawContacts.ACCOUNT_TYPE + "=?"
+ + " AND " + RawContacts.ACCOUNT_NAME + "=?)");
+ selectionArgs.add(filter.accountType);
+ selectionArgs.add(filter.accountName);
+ break;
+ }
case ContactListFilter.FILTER_TYPE_GROUP: {
- if (filter.groupId != 0) {
- selection.append(Data.MIMETYPE + "=?"
- + " AND " + GroupMembership.GROUP_ROW_ID + "=?");
- selectionArgs.add(GroupMembership.CONTENT_ITEM_TYPE);
- selectionArgs.add(String.valueOf(filter.groupId));
- } else {
- // TODO: avoid the use of private API
- selection.append(
- Data.CONTACT_ID + " IN ("
- + "SELECT DISTINCT " + RawContacts.CONTACT_ID
- + " FROM raw_contacts"
- + " WHERE " + RawContacts.ACCOUNT_TYPE + "=?"
- + " AND " + RawContacts.ACCOUNT_NAME + "=?)");
- selectionArgs.add(filter.accountType);
- selectionArgs.add(filter.accountName);
- }
+ selection.append(Data.MIMETYPE + "=?"
+ + " AND " + GroupMembership.GROUP_ROW_ID + "=?");
+ selectionArgs.add(GroupMembership.CONTENT_ITEM_TYPE);
+ selectionArgs.add(String.valueOf(filter.groupId));
break;
}
}