Merge "Add a variable detecting illegal unbinding."
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c030cf0..a15619a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1357,6 +1357,9 @@
<!-- Contact list filter selection indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
<string name="list_filter_customize">Customize...</string>
+ <!-- Contact list filter selection indicating that the list shows all contacts with phone numbers [CHAR LIMIT=64] -->
+ <string name="list_filter_phones">Contacts with phone numbers</string>
+
<!-- Title of the activity that allows the user to customize filtering of contact list [CHAR LIMIT=128] -->
<string name="custom_list_filter">Define custom view</string>
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index aa75414..149260f 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -23,6 +23,7 @@
import com.android.contacts.list.ContactBrowseListContextMenuAdapter;
import com.android.contacts.list.ContactBrowseListFragment;
import com.android.contacts.list.ContactEntryListFragment;
+import com.android.contacts.list.ContactListFilter;
import com.android.contacts.list.ContactListFilterController;
import com.android.contacts.list.ContactsIntentResolver;
import com.android.contacts.list.ContactsRequest;
@@ -172,11 +173,9 @@
mHasActionBar = getWindow().hasFeature(Window.FEATURE_ACTION_BAR);
mContactContentDisplayed = findViewById(R.id.detail_container) != null;
- Uri contactUri = null;
if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT) {
- contactUri = mRequest.getContactUri();
if (!mContactContentDisplayed) {
- startActivity(new Intent(Intent.ACTION_VIEW, contactUri));
+ startActivity(new Intent(Intent.ACTION_VIEW, mRequest.getContactUri()));
finish();
return;
}
@@ -190,10 +189,7 @@
// TODO: request may ask for FREQUENT - set the filter accordingly
}
- configureListFragment(contactUri);
- if (contactUri != null) {
- setSelectedContactUri(contactUri);
- }
+ configureListFragment(true /* from request */);
if (mContactContentDisplayed) {
setupContactDetailFragment(mListFragment.getSelectedContactUri());
@@ -238,20 +234,28 @@
return TextUtils.isEmpty(uriString) ? null : Uri.parse(uriString);
}
- private void configureListFragment(Uri selectedContactUri) {
+ private void configureListFragment(boolean fromRequest) {
boolean searchMode = mSearchMode;
- if (mHasActionBar) {
- searchMode = mActionBarAdapter.isSearchMode();
+ if (fromRequest) {
+ if (mRequest.getDisplayWithPhoneNumbersOnly()) {
+ mContactListFilterController.setContactListFilter(new ContactListFilter(
+ ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY), false);
+ searchMode = false;
+ }
} else {
+ if (mHasActionBar) {
+ searchMode = mActionBarAdapter.isSearchMode();
+ } else {
// TODO: reenable FREQUENT, STARRED and STREQUENT
-// int actionCode = mRequest.getActionCode();
-// if (actionCode == ContactsRequest.ACTION_FREQUENT ||
-// actionCode == ContactsRequest.ACTION_STARRED ||
-// actionCode == ContactsRequest.ACTION_STREQUENT) {
-// mode = ContactBrowserMode.MODE_FAVORITES;
-// } else {
-// mode = ContactBrowserMode.MODE_CONTACTS;
-// }
+// int actionCode = mRequest.getActionCode();
+// if (actionCode == ContactsRequest.ACTION_FREQUENT ||
+// actionCode == ContactsRequest.ACTION_STARRED ||
+// actionCode == ContactsRequest.ACTION_STREQUENT) {
+// mode = ContactBrowserMode.MODE_FAVORITES;
+// } else {
+// mode = ContactBrowserMode.MODE_CONTACTS;
+// }
+ }
}
boolean replaceList = mListFragment == null || (mSearchMode != searchMode);
@@ -283,13 +287,16 @@
}
}
- Uri selectUri;
- if (selectedContactUri != null) {
- selectUri = selectedContactUri;
- } else if (mListFragment.getSelectedContactUri() == null) {
+ Uri selectUri = null;
+ if (fromRequest) {
+ selectUri = mRequest.getContactUri();
+ if (selectUri != null) {
+ setSelectedContactUri(selectUri);
+ }
+ }
+
+ if (selectUri == null && mListFragment.getSelectedContactUri() == null) {
selectUri = getDefaultSelectedContactUri();
- } else {
- selectUri = null;
}
if (selectUri != null) {
@@ -422,7 +429,7 @@
*/
@Override
public void onAction() {
- configureListFragment(null);
+ configureListFragment(false /* from request */);
setupContactDetailFragment(mListFragment.getSelectedContactUri());
}
@@ -435,8 +442,6 @@
DefaultContactBrowseListFragment fragment = new DefaultContactBrowseListFragment();
fragment.setContactsRequest(mRequest);
fragment.setOnContactListActionListener(new ContactBrowserActionListener());
- fragment.setDisplayWithPhonesOnlyOption(mRequest.getDisplayWithPhonesOnlyOption());
- fragment.setVisibleContactsRestrictionEnabled(mRequest.getDisplayOnlyVisible());
fragment.setContextMenuAdapter(new ContactBrowseListContextMenuAdapter(fragment));
fragment.setSearchMode(mRequest.isSearchMode());
fragment.setQueryString(mRequest.getQueryString());
@@ -491,8 +496,6 @@
private ContactBrowseListFragment createContactSearchFragment() {
DefaultContactBrowseListFragment fragment = new DefaultContactBrowseListFragment();
fragment.setOnContactListActionListener(new ContactBrowserActionListener());
- fragment.setDisplayWithPhonesOnlyOption(ContactsRequest.DISPLAY_ONLY_WITH_PHONES_DISABLED);
- fragment.setVisibleContactsRestrictionEnabled(true);
fragment.setContextMenuAdapter(new ContactBrowseListContextMenuAdapter(fragment));
fragment.setSearchMode(true);
fragment.setDirectorySearchEnabled(true);
diff --git a/src/com/android/contacts/activities/ContactSearchActivity.java b/src/com/android/contacts/activities/ContactSearchActivity.java
index cac3e1e..708099c 100644
--- a/src/com/android/contacts/activities/ContactSearchActivity.java
+++ b/src/com/android/contacts/activities/ContactSearchActivity.java
@@ -95,8 +95,6 @@
private ContactBrowseListFragment createContactSearchFragment() {
DefaultContactBrowseListFragment fragment = new DefaultContactBrowseListFragment();
fragment.setOnContactListActionListener(new ContactBrowserActionListener());
- fragment.setDisplayWithPhonesOnlyOption(ContactsRequest.DISPLAY_ONLY_WITH_PHONES_DISABLED);
- fragment.setVisibleContactsRestrictionEnabled(true);
fragment.setContextMenuAdapter(new ContactBrowseListContextMenuAdapter(fragment));
fragment.setSearchMode(true);
fragment.setDirectorySearchEnabled(true);
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 66d06d2..bd2834d 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -142,8 +142,6 @@
fragment.setOnContactListActionListener(new ContactBrowserActionListener());
fragment.setEditMode(true);
fragment.setCreateContactEnabled(true);
- fragment.setDisplayWithPhonesOnlyOption(mRequest.getDisplayWithPhonesOnlyOption());
- fragment.setVisibleContactsRestrictionEnabled(mRequest.getDisplayOnlyVisible());
fragment.setSearchMode(mRequest.isSearchMode());
fragment.setQueryString(mRequest.getQueryString());
fragment.setDirectorySearchEnabled(false);
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
index 47b35d1..0189bbb 100644
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ b/src/com/android/contacts/list/ContactListFilter.java
@@ -25,12 +25,13 @@
*/
public final class ContactListFilter implements Comparable<ContactListFilter> {
- public static final int FILTER_TYPE_ALL_ACCOUNTS = -1;
- public static final int FILTER_TYPE_CUSTOM = -2;
- public static final int FILTER_TYPE_STARRED = -3;
- public static final int FILTER_TYPE_DEFAULT = -4;
+ public static final int FILTER_TYPE_DEFAULT = -1;
+ public static final int FILTER_TYPE_ALL_ACCOUNTS = -2;
+ public static final int FILTER_TYPE_CUSTOM = -3;
+ public static final int FILTER_TYPE_STARRED = -4;
+ public static final int FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY = -5;
+
public static final int FILTER_TYPE_ACCOUNT = 0;
- public static final int FILTER_TYPE_ = 0;
public static final int FILTER_TYPE_GROUP = 1;
private static final String KEY_FILTER_TYPE = "filter.type";
@@ -67,6 +68,13 @@
this.title = title;
}
+ /**
+ * Returns true if this filter is based on data and may become invalid over time.
+ */
+ public boolean isValidationRequired() {
+ return filterType == FILTER_TYPE_ACCOUNT || filterType == FILTER_TYPE_GROUP;
+ }
+
@Override
public String toString() {
switch (filterType) {
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index 8bcd488..2b406a3 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -141,10 +141,7 @@
mFilterList.clear();
}
- boolean filterValid = mFilter != null
- && (mFilter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS
- || mFilter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM
- || mFilter.filterType == ContactListFilter.FILTER_TYPE_STARRED);
+ boolean filterValid = mFilter != null && !mFilter.isValidationRequired();
int accountCount = 0;
int count = filters.size();
@@ -176,7 +173,12 @@
mFilters.append(mNextFilterId++, filter);
mFilterList.add(filter);
- filterValid |= filter.equals(mFilter);
+
+ if (filter.equals(mFilter)) {
+ // Refresh the filter in case the title got changed
+ mFilter = filter;
+ filterValid = true;
+ }
if (firstAndOnly) {
mFilters.append(mNextFilterId++,
@@ -216,7 +218,7 @@
}
}
- protected void setContactListFilter(int filterId) {
+ private void setContactListFilter(int filterId) {
ContactListFilter filter;
if (filterId == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
filter = new ContactListFilter(ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
@@ -231,11 +233,17 @@
}
}
+ setContactListFilter(filter, true);
+ }
+
+ public void setContactListFilter(ContactListFilter filter, boolean persistent) {
if (!filter.equals(mFilter)) {
mFilter = filter;
ContactListFilter.storeToPreferences(getSharedPreferences(), mFilter);
updateFilterView();
- mListener.onContactListFilterChanged();
+ if (mListener != null) {
+ mListener.onContactListFilterChanged();
+ }
}
}
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index c9a0472..dc88207 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -66,41 +66,22 @@
switch (mFilter.filterType) {
case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
- if (mIcon != null) {
- mIcon.setVisibility(View.VISIBLE);
- mIcon.setImageResource(R.drawable.ic_contact_list_filter_all);
- }
- mLabel.setText(R.string.list_filter_all_accounts);
- mLabel.setVisibility(View.VISIBLE);
- if (dropdown) {
- mIndentedLabel.setVisibility(View.GONE);
- }
+ bindView(R.drawable.ic_contact_list_filter_all,
+ R.string.list_filter_all_accounts);
break;
}
case ContactListFilter.FILTER_TYPE_STARRED: {
- if (mIcon != null) {
- mIcon.setVisibility(View.VISIBLE);
- mIcon.setImageResource(R.drawable.ic_contact_list_filter_starred);
- }
- mLabel.setText(R.string.list_filter_all_starred);
- mLabel.setVisibility(View.VISIBLE);
- if (dropdown) {
- mIndentedLabel.setVisibility(View.GONE);
- }
+ bindView(R.drawable.ic_contact_list_filter_starred,
+ R.string.list_filter_all_starred);
break;
}
case ContactListFilter.FILTER_TYPE_CUSTOM: {
- if (mIcon != null) {
- mIcon.setVisibility(View.VISIBLE);
- mIcon.setImageResource(R.drawable.ic_contact_list_filter_custom);
- }
- mLabel.setText(dropdown
- ? R.string.list_filter_customize
- : R.string.list_filter_custom);
- mLabel.setVisibility(View.VISIBLE);
- if (dropdown) {
- mIndentedLabel.setVisibility(View.GONE);
- }
+ bindView(R.drawable.ic_contact_list_filter_custom,
+ dropdown ? R.string.list_filter_customize : R.string.list_filter_custom);
+ break;
+ }
+ case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
+ bindView(0, R.string.list_filter_phones);
break;
}
case ContactListFilter.FILTER_TYPE_ACCOUNT: {
@@ -135,4 +116,22 @@
}
}
}
+
+ private void bindView(int iconResource, int textResource) {
+ if (mIcon != null) {
+ if (iconResource != 0) {
+ mIcon.setVisibility(View.VISIBLE);
+ mIcon.setImageResource(iconResource);
+ } else {
+ mIcon.setVisibility(View.GONE);
+ }
+ }
+
+ mLabel.setText(textResource);
+ mLabel.setVisibility(View.VISIBLE);
+
+ if (mIndentedLabel != null) {
+ mIndentedLabel.setVisibility(View.GONE);
+ }
+ }
}
diff --git a/src/com/android/contacts/list/ContactPickerFragment.java b/src/com/android/contacts/list/ContactPickerFragment.java
index 166294b..9bc4d8d 100644
--- a/src/com/android/contacts/list/ContactPickerFragment.java
+++ b/src/com/android/contacts/list/ContactPickerFragment.java
@@ -117,9 +117,6 @@
super.configureAdapter();
ContactEntryListAdapter adapter = getAdapter();
- if (adapter instanceof DefaultContactListAdapter) {
- ((DefaultContactListAdapter)adapter).setVisibleContactsOnly(true);
- }
// If "Create new contact" is shown, don't display the empty list UI
adapter.setEmptyListEnabled(!isCreateContactEnabled());
diff --git a/src/com/android/contacts/list/ContactsIntentResolver.java b/src/com/android/contacts/list/ContactsIntentResolver.java
index 79dc1b0..d1525fb 100644
--- a/src/com/android/contacts/list/ContactsIntentResolver.java
+++ b/src/com/android/contacts/list/ContactsIntentResolver.java
@@ -61,17 +61,12 @@
if (UI.LIST_DEFAULT.equals(action) ) {
request.setActionCode(ContactsRequest.ACTION_DEFAULT);
- request.setDisplayWithPhonesOnlyOption(
- ContactsRequest.DISPLAY_ONLY_WITH_PHONES_PREFERENCE);
} else if (UI.LIST_ALL_CONTACTS_ACTION.equals(action)) {
request.setActionCode(ContactsRequest.ACTION_DEFAULT);
- request.setDisplayWithPhonesOnlyOption(
- ContactsRequest.DISPLAY_ONLY_WITH_PHONES_DISABLED);
request.setDisplayOnlyVisible(false);
} else if (UI.LIST_CONTACTS_WITH_PHONES_ACTION.equals(action)) {
request.setActionCode(ContactsRequest.ACTION_DEFAULT);
- request.setDisplayWithPhonesOnlyOption(
- ContactsRequest.DISPLAY_ONLY_WITH_PHONES_ENABLED);
+ request.setDisplayWithPhoneNumbersOnly(true);
} else if (UI.LIST_STARRED_ACTION.equals(action)) {
request.setActionCode(ContactsRequest.ACTION_STARRED);
} else if (UI.LIST_FREQUENT_ACTION.equals(action)) {
diff --git a/src/com/android/contacts/list/ContactsRequest.java b/src/com/android/contacts/list/ContactsRequest.java
index e8ccb43..331dc93 100644
--- a/src/com/android/contacts/list/ContactsRequest.java
+++ b/src/com/android/contacts/list/ContactsRequest.java
@@ -74,12 +74,7 @@
private CharSequence mTitle;
private boolean mSearchMode;
private String mQueryString;
-
- public static final int DISPLAY_ONLY_WITH_PHONES_PREFERENCE = 0;
- public static final int DISPLAY_ONLY_WITH_PHONES_ENABLED = 1;
- public static final int DISPLAY_ONLY_WITH_PHONES_DISABLED = 2;
-
- private int mDisplayOnlyWithPhones;
+ private boolean mDisplayOnlyWithPhones;
private boolean mDisplayOnlyVisible;
private String mGroupName;
private boolean mLegacyCompatibilityMode;
@@ -119,7 +114,7 @@
request.mTitle = source.readCharSequence();
request.mSearchMode = source.readInt() != 0;
request.mQueryString = source.readString();
- request.mDisplayOnlyWithPhones = source.readInt();
+ request.mDisplayOnlyWithPhones = source.readInt() != 0;
request.mDisplayOnlyVisible = source.readInt() != 0;
request.mGroupName = source.readString();
request.mLegacyCompatibilityMode = source.readInt() != 0;
@@ -136,7 +131,7 @@
dest.writeCharSequence(mTitle);
dest.writeInt(mSearchMode ? 1 : 0);
dest.writeString(mQueryString);
- dest.writeInt(mDisplayOnlyWithPhones);
+ dest.writeInt(mDisplayOnlyWithPhones ? 1 : 0);
dest.writeInt(mDisplayOnlyVisible ? 1 : 0);
dest.writeString(mGroupName);
dest.writeInt(mLegacyCompatibilityMode ? 1 : 0);
@@ -188,11 +183,11 @@
mDisplayOnlyVisible = flag;
}
- public int getDisplayWithPhonesOnlyOption() {
+ public boolean getDisplayWithPhoneNumbersOnly() {
return mDisplayOnlyWithPhones;
}
- public void setDisplayWithPhonesOnlyOption(int option) {
+ public void setDisplayWithPhoneNumbersOnly(boolean option) {
mDisplayOnlyWithPhones = option;
}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index ca93e0c..10f2290 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -16,14 +16,11 @@
package com.android.contacts.list;
import com.android.contacts.R;
-import com.android.contacts.preference.ContactsPreferences;
import android.app.Activity;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
-import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -40,16 +37,12 @@
private static final String KEY_EDIT_MODE = "editMode";
private static final String KEY_CREATE_CONTACT_ENABLED = "createContactEnabled";
- private static final String KEY_DISPLAY_WITH_PHONES_ONLY = "displayWithPhonesOnly";
- private static final String KEY_VISIBLE_CONTACTS_RESTRICTION = "visibleContactsRestriction";
private static final String KEY_FILTER_ENABLED = "filterEnabled";
private static final int REQUEST_CODE_CUSTOMIZE_FILTER = 3;
private boolean mEditMode;
private boolean mCreateContactEnabled;
- private int mDisplayWithPhonesOnlyOption = ContactsRequest.DISPLAY_ONLY_WITH_PHONES_DISABLED;
- private boolean mVisibleContactsRestrictionEnabled = true;
private View mCounterHeaderView;
private View mSearchHeaderView;
@@ -72,8 +65,6 @@
super.onSaveInstanceState(outState);
outState.putBoolean(KEY_EDIT_MODE, mEditMode);
outState.putBoolean(KEY_CREATE_CONTACT_ENABLED, mCreateContactEnabled);
- outState.putInt(KEY_DISPLAY_WITH_PHONES_ONLY, mDisplayWithPhonesOnlyOption);
- outState.putBoolean(KEY_VISIBLE_CONTACTS_RESTRICTION, mVisibleContactsRestrictionEnabled);
outState.putBoolean(KEY_FILTER_ENABLED, mFilterEnabled);
}
@@ -87,47 +78,10 @@
mEditMode = savedState.getBoolean(KEY_EDIT_MODE);
mCreateContactEnabled = savedState.getBoolean(KEY_CREATE_CONTACT_ENABLED);
- mDisplayWithPhonesOnlyOption = savedState.getInt(KEY_DISPLAY_WITH_PHONES_ONLY);
- mVisibleContactsRestrictionEnabled =
- savedState.getBoolean(KEY_VISIBLE_CONTACTS_RESTRICTION);
setFilterEnabled(savedState.getBoolean(KEY_FILTER_ENABLED));
}
@Override
- protected void prepareEmptyView() {
- if (isShowingContactsWithPhonesOnly()) {
- setEmptyText(R.string.noContactsWithPhoneNumbers);
- } else {
- super.prepareEmptyView();
- }
- }
-
- private boolean isShowingContactsWithPhonesOnly() {
- switch (mDisplayWithPhonesOnlyOption) {
- case ContactsRequest.DISPLAY_ONLY_WITH_PHONES_DISABLED:
- return false;
- case ContactsRequest.DISPLAY_ONLY_WITH_PHONES_ENABLED:
- return true;
- case ContactsRequest.DISPLAY_ONLY_WITH_PHONES_PREFERENCE:
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(getContext());
- return prefs.getBoolean(ContactsPreferences.PREF_DISPLAY_ONLY_PHONES,
- ContactsPreferences.PREF_DISPLAY_ONLY_PHONES_DEFAULT);
- }
- return false;
- }
-
- public void setDisplayWithPhonesOnlyOption(int displayWithPhonesOnly) {
- mDisplayWithPhonesOnlyOption = displayWithPhonesOnly;
- configureAdapter();
- }
-
- public void setVisibleContactsRestrictionEnabled(boolean flag) {
- mVisibleContactsRestrictionEnabled = flag;
- configureAdapter();
- }
-
- @Override
protected void onItemClick(int position, long id) {
ContactListAdapter adapter = getAdapter();
if (isEditMode()) {
@@ -154,12 +108,8 @@
super.configureAdapter();
DefaultContactListAdapter adapter = (DefaultContactListAdapter)getAdapter();
- if (adapter != null) {
- adapter.setContactsWithPhoneNumbersOnly(isShowingContactsWithPhonesOnly());
- adapter.setVisibleContactsOnly(mVisibleContactsRestrictionEnabled);
- if (mFilterEnabled && mFilterController != null) {
- adapter.setFilter(mFilterController.getFilter(), mFilterController.getFilterList());
- }
+ if (adapter != null && mFilterEnabled && mFilterController != null) {
+ adapter.setFilter(mFilterController.getFilter(), mFilterController.getFilterList());
}
}
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 4160931..ede3597 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -15,11 +15,15 @@
*/
package com.android.contacts.list;
+import com.android.contacts.preference.ContactsPreferences;
+
import android.content.Context;
import android.content.CursorLoader;
+import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.net.Uri.Builder;
+import android.preference.PreferenceManager;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.Contacts;
@@ -37,21 +41,10 @@
*/
public class DefaultContactListAdapter extends ContactListAdapter {
- private boolean mContactsWithPhoneNumbersOnly;
- private boolean mVisibleContactsOnly;
-
public DefaultContactListAdapter(Context context) {
super(context);
}
- public void setContactsWithPhoneNumbersOnly(boolean flag) {
- mContactsWithPhoneNumbersOnly = flag;
- }
-
- public void setVisibleContactsOnly(boolean flag) {
- mVisibleContactsOnly = flag;
- }
-
@Override
public void configureLoader(CursorLoader loader, long directoryId) {
@@ -141,14 +134,14 @@
selection.append(Contacts.STARRED + "!=0");
break;
}
+ case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
+ selection.append(Contacts.HAS_PHONE_NUMBER + "=1");
+ break;
+ }
case ContactListFilter.FILTER_TYPE_CUSTOM: {
- if (mVisibleContactsOnly && mContactsWithPhoneNumbersOnly) {
- selection.append(Contacts.IN_VISIBLE_GROUP + "=1"
- + " AND " + Contacts.HAS_PHONE_NUMBER + "=1");
- } else if (mVisibleContactsOnly) {
- selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
- } else if (mContactsWithPhoneNumbersOnly) {
- selection.append(Contacts.HAS_PHONE_NUMBER + "=1");
+ selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
+ if (isCustomFilterForPhoneNumbersOnly()) {
+ selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");
}
break;
}
@@ -202,4 +195,11 @@
bindSearchSnippet(view, cursor);
}
}
+
+ private boolean isCustomFilterForPhoneNumbersOnly() {
+ // TODO: this flag should not be stored in shared prefs. It needs to be in the db.
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+ return prefs.getBoolean(ContactsPreferences.PREF_DISPLAY_ONLY_PHONES,
+ ContactsPreferences.PREF_DISPLAY_ONLY_PHONES_DEFAULT);
+ }
}
diff --git a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
index 94f2aad..4fcd76d 100644
--- a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
+++ b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
@@ -53,7 +53,7 @@
private static final String ANDROID_CONTACTS_PACKAGE = "com.android.contacts";
private static final String CONTACT_LIST_ACTIVITY_CLASS_NAME =
- "com.android.contacts.activities.ContactListActivity";
+ "com.android.contacts.activities.ContactBrowserActivity";
private static final String SEARCH_RESULTS_ACTIVITY_CLASS_NAME =
"com.android.contacts.SearchResultsActivity";
private static final String MULTIPLE_PHONE_PICKER_ACTIVITY_CLASS_NAME =