*/
public boolean pendingRemoval;
/**
- * The map from account name to account preference
+ * The map from account key to account preference
*/
- public ArrayMap<CharSequence, AccountTypePreference> accountPreferences = new ArrayMap<>();
+ public ArrayMap<String, AccountTypePreference> accountPreferences = new ArrayMap<>();
}
public AccountPreferenceController(Context context, SettingsPreferenceFragment parent,
return;
}
if (profileData.userInfo.isEnabled()) {
- final ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove =
+ final ArrayMap<String, AccountTypePreference> preferenceToRemove =
new ArrayMap<>(profileData.accountPreferences);
final ArrayList<AccountTypePreference> preferences = getAccountTypePreferences(
profileData.authenticatorHelper, profileData.userInfo.getUserHandle(),
for (int i = 0; i < count; i++) {
final AccountTypePreference preference = preferences.get(i);
preference.setOrder(i);
- if (!profileData.accountPreferences.containsValue(preference)) {
- profileData.preferenceGroup.addPreference(preferences.get(i));
- profileData.accountPreferences.put(preference.getTitle(), preference);
+ final String key = preference.getKey();
+ if (!profileData.accountPreferences.containsKey(key)) {
+ profileData.preferenceGroup.addPreference(preference);
+ profileData.accountPreferences.put(key, preference);
}
}
if (profileData.addAccountPreference != null) {
profileData.preferenceGroup.addPreference(profileData.addAccountPreference);
}
- for (CharSequence name : preferenceToRemove.keySet()) {
+ for (String key : preferenceToRemove.keySet()) {
profileData.preferenceGroup.removePreference(
- profileData.accountPreferences.get(name));
- profileData.accountPreferences.remove(name);
+ profileData.accountPreferences.get(key));
+ profileData.accountPreferences.remove(key);
}
} else {
profileData.preferenceGroup.removeAll();
}
private ArrayList<AccountTypePreference> getAccountTypePreferences(AuthenticatorHelper helper,
- UserHandle userHandle,
- ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove) {
+ UserHandle userHandle, ArrayMap<String, AccountTypePreference> preferenceToRemove) {
final String[] accountTypes = helper.getEnabledAccountTypes();
final ArrayList<AccountTypePreference> accountTypePreferences =
new ArrayList<>(accountTypes.length);
// Add a preference row for each individual account
for (Account account : accounts) {
- final AccountTypePreference preference = preferenceToRemove.remove(account.name);
+ final AccountTypePreference preference =
+ preferenceToRemove.remove(AccountTypePreference.buildKey(account));
if (preference != null) {
accountTypePreferences.add(preference);
continue;
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent),
- account.name, titleResPackageName, titleResId, label,
+ account, titleResPackageName, titleResId, label,
AccountDetailDashboardFragment.class.getName(), fragmentArguments, icon));
}
helper.preloadDrawableForType(mContext, accountType);