Restore the "Contacts to display" custom filter (1/3)
* Revert "Remove AccountFilterActivity and its usage (Contacts)"
This reverts commit 1fc8847aa6bef1b6ceb017870d3de90f5960757e.
* But we don't restore the changes to DefaultContactBrowseListFragment
since we won't be starting the "Contacts to display" filter
from an overflow menu option on PeopleActivity.
* In DrawerActivity and PeopleActivity, everywhere we check for
FITLER_TYPE_ALL_ACCOUNTS, we must also accept FILTER_TYPE_CUSTOM,
since either of those can be used for the default/main contacts
list again.
Bug 29185471
Change-Id: Ie77e8acb16980b9015bd1f1f4af9fb7a014f3c51
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index cf44fe3..3ae009e 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -49,6 +49,7 @@
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.list.AccountFilterActivity;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.model.AccountTypeManager;
@@ -465,7 +466,7 @@
positionOfLastFilter, menuName);
mFilterMenuMap.put(filter, menuItem);
final Intent intent = new Intent();
- intent.putExtra(AccountFilterUtil.EXTRA_CONTACT_LIST_FILTER, filter);
+ intent.putExtra(AccountFilterActivity.EXTRA_CONTACT_LIST_FILTER, filter);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
@@ -496,7 +497,7 @@
protected void updateFilterMenu(ContactListFilter filter) {
clearCheckedMenus();
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
+ if (ContactListFilter.isContactsFilterType(filter)) {
if (mIdMenuMap != null && mIdMenuMap.get(R.id.nav_all_contacts) != null) {
mIdMenuMap.get(R.id.nav_all_contacts).setCheckable(true);
mIdMenuMap.get(R.id.nav_all_contacts).setChecked(true);
@@ -512,7 +513,7 @@
}
/**
- * Returns the current filter if the child class is {@link PeopleActivity}, and null otherwise.
+ * Returns the current filter if the child class is PeopleActivity, and null otherwise.
*/
protected ContactListFilter getContactListFilter() {
return null;
@@ -526,7 +527,6 @@
@Override
public boolean onNavigationItemSelected(final MenuItem item) {
final int id = item.getItemId();
-
mToggle.runWhenIdle(new Runnable() {
@Override
public void run() {
@@ -564,8 +564,8 @@
protected void switchToAllContacts() {
final Intent intent = new Intent();
- final ContactListFilter filter = createAllAccountsFilter();
- intent.putExtra(AccountFilterUtil.EXTRA_CONTACT_LIST_FILTER, filter);
+ final ContactListFilter filter = createContactsFilter();
+ intent.putExtra(AccountFilterActivity.EXTRA_CONTACT_LIST_FILTER, filter);
AccountFilterUtil.handleAccountFilterResult(
mContactListFilterController, AppCompatActivity.RESULT_OK, intent);
if (shouldFinish()) {
@@ -578,8 +578,17 @@
Assistants.getDuplicatesActivityIntent(this));
}
- protected ContactListFilter createAllAccountsFilter() {
- return ContactListFilter.createFilterWithType(ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
+ /**
+ * Returns a {@link ContactListFilter} of type
+ * {@link ContactListFilter#FILTER_TYPE_ALL_ACCOUNTS}, or if a custom "Contacts to display"
+ * filter has been set, then one of type {@link ContactListFilter#FILTER_TYPE_CUSTOM}.
+ */
+ protected ContactListFilter createContactsFilter() {
+ final int filterType =
+ ContactListFilterController.getInstance(this).isCustomFilterPersisted()
+ ? ContactListFilter.FILTER_TYPE_CUSTOM
+ : ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
+ return ContactListFilter.createFilterWithType(filterType);
}
private void clearCheckedMenus() {
@@ -587,7 +596,6 @@
clearCheckedMenu(mGroupMenuMap);
clearCheckedMenu(mIdMenuMap);
}
-
private void clearCheckedMenu(Map<?, MenuItem> map) {
final Iterator it = map.entrySet().iterator();
while (it.hasNext()) {