Add device and SIM to AccountTypeManager
This makes these account types available throughout the app rather than
just the Nav drawer.
Test:
Added unit tests for new classes; run with:
$ adb shell am instrument -w \
com.google.android.tests/android.test.InstrumentationTestRunner
Manually on Nexus 6, LG G5 and Samsung S7 with device and SIM contacts
in CP2 by verifying "Device" and "SIM" options were available in
* nav drawer
* account list accessed by Pressing FAB without default account set
* editor account dropdown for new contact
* editor account label when editing existing contact
* picker for default account in settings
* settings customize screen account list
Bug 30867780
Change-Id: I329381ccc58d59f2e27f65a3d9dc0164fb20c971
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index f976807..34c95c6 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -54,12 +54,10 @@
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.preference.ContactsPreferenceActivity;
import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.common.util.DeviceAccountPresentationValues;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.editor.ContactEditorFragment;
@@ -72,10 +70,11 @@
import com.android.contacts.interactions.AccountFiltersFragment;
import com.android.contacts.interactions.AccountFiltersFragment.AccountFiltersListener;
import com.android.contacts.quickcontact.QuickContactActivity;
+import com.android.contacts.common.model.account.AccountDisplayInfo;
+import com.android.contacts.common.model.account.AccountDisplayInfoFactory;
import com.android.contacts.util.SharedPreferenceUtil;
import com.android.contactsbind.Assistants;
import com.android.contactsbind.HelpUtils;
-import com.android.contactsbind.ObjectFactory;
import java.util.HashMap;
import java.util.Iterator;
@@ -173,7 +172,6 @@
// The account the new group will be created under.
private AccountWithDataSet mNewGroupAccount;
- private DeviceAccountPresentationValues mDeviceAccountPresentationValues;
private int mPositionOfLastGroup;
@@ -186,8 +184,6 @@
super.setContentView(R.layout.contacts_drawer_activity);
- mDeviceAccountPresentationValues = ObjectFactory.createDeviceAccountPresentationValues(this);
-
// Set up the action bar.
mToolbar = getView(R.id.toolbar);
setSupportActionBar(mToolbar);
@@ -461,6 +457,9 @@
@Override
public void onFiltersLoaded(List<ContactListFilter> accountFilterItems) {
+ final AccountDisplayInfoFactory accountDisplayFactory = AccountDisplayInfoFactory.
+ fromListFilters(this, accountFilterItems);
+
final Menu menu = mNavigationView.getMenu();
final MenuItem filtersMenuItem = menu.findItem(R.id.nav_filters);
final SubMenu subMenu = filtersMenuItem.getSubMenu();
@@ -473,12 +472,12 @@
int positionOfLastFilter = mPositionOfLastGroup + GAP_BETWEEN_TWO_MENU_GROUPS;
- mDeviceAccountPresentationValues.setFilters(accountFilterItems);
-
for (int i = 0; i < accountFilterItems.size(); i++) {
positionOfLastFilter++;
final ContactListFilter filter = accountFilterItems.get(i);
- final CharSequence menuName = mDeviceAccountPresentationValues.getLabel(i);
+ final AccountDisplayInfo displayableAccount =
+ accountDisplayFactory.getAccountDisplayInfoFor(filter);
+ final CharSequence menuName = displayableAccount.getNameLabel();
final MenuItem menuItem = subMenu.add(R.id.nav_filters_items, Menu.NONE,
positionOfLastFilter, menuName);
mFilterMenuMap.put(filter, menuItem);
@@ -502,17 +501,15 @@
return true;
}
});
- menuItem.setIcon(mDeviceAccountPresentationValues.getIcon(i));
+ menuItem.setIcon(displayableAccount.getIcon());
// Get rid of the default menu item overlay and show original account icons.
menuItem.getIcon().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_ATOP);
// Create a dummy action view to attach extra hidden content description to the menuItem
// for Talkback. We want Talkback to read out the account type but not have it be part
// of the menuItem title.
- final AccountType account = AccountTypeManager.getInstance(this)
- .getAccountType(filter.accountType, filter.dataSet);
LinearLayout view = (LinearLayout) LayoutInflater.from(this)
.inflate(R.layout.account_type_info, null);
- view.setContentDescription(account.getDisplayLabel(this));
+ view.setContentDescription(displayableAccount.getTypeLabel());
view.setVisibility(View.VISIBLE);
menuItem.setActionView(view);
}