/** * Try to obtain ContactListFilter object saved in SharedPreference. * If there's no info there, return ALL filter instead. */ public static ContactListFilter restoreDefaultPreferences(SharedPreferences prefs) { ContactListFilter filter = restoreFromPreferences(prefs); if (filter == null) { filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS); } // "Group" filter is obsolete and thus is not exposed anymore. The "single contact mode" // should also not be stored in preferences anymore since it is a temporary state. if (filter.filterType == FILTER_TYPE_GROUP || filter.filterType == FILTER_TYPE_SINGLE_CONTACT) { filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS); } return filter; }
@Override public void selectCustomFilter() { setContactListFilter(ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_CUSTOM), true); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_CANCELED && mCustomFilterView != null && !mIsCustomFilterViewSelected) { mCustomFilterView.setActivated(false); return; } if (resultCode != Activity.RESULT_OK) { return; } switch (requestCode) { case SUBACTIVITY_CUSTOMIZE_FILTER: { final Intent intent = new Intent(); ContactListFilter filter = ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_CUSTOM); intent.putExtra(KEY_EXTRA_CONTACT_LIST_FILTER, filter); setResult(Activity.RESULT_OK, intent); finish(); break; } } }
private static List<ContactListFilter> loadAccountFilters(Context context) { final ArrayList<ContactListFilter> result = Lists.newArrayList(); final ArrayList<ContactListFilter> accountFilters = Lists.newArrayList(); final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context); List<AccountWithDataSet> accounts = accountTypes.getAccounts(false); for (AccountWithDataSet account : accounts) { AccountType accountType = accountTypes.getAccountType(account.type, account.dataSet); if (accountType.isExtension() && !account.hasData(context)) { // Hide extensions with no raw_contacts. continue; } Drawable icon = accountType != null ? accountType.getDisplayIcon(context) : null; accountFilters.add(ContactListFilter.createAccountFilter( account.type, account.name, account.dataSet, icon)); } // Always show "All", even when there's no accounts. (We may have local contacts) result.add(ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS)); final int count = accountFilters.size(); if (count >= 1) { // If we only have one account, don't show it as "account", instead show it as "all" if (count > 1) { result.addAll(accountFilters); } result.add(ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_CUSTOM)); } return result; }
@Override protected ContactEntryListAdapter createListAdapter() { final DefaultContactListAdapter adapter = new DefaultContactListAdapter(getActivity()) { @Override protected void bindView(View itemView, int partition, Cursor cursor, int position) { super.bindView(itemView, partition, cursor, position); itemView.setTag(this.getContactUri(partition, cursor)); } }; adapter.setDisplayPhotos(true); adapter.setFilter(ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_DEFAULT)); adapter.setSectionHeaderDisplayEnabled(isSectionHeaderDisplayEnabled()); return adapter; }
@Override public void checkFilterValidity(boolean notifyListeners) { if (mFilter == null) { return; } switch (mFilter.filterType) { case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: setContactListFilter( ContactListFilter.restoreDefaultPreferences(getSharedPreferences()), false, notifyListeners); break; case ContactListFilter.FILTER_TYPE_ACCOUNT: if (!filterAccountExists()) { // The current account filter points to invalid account. Use "all" filter // instead. setContactListFilter(ContactListFilter.createFilterWithType( ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS), true, notifyListeners); } } }