Modify account settings for better locale resolution

Bug: 16282173
Change-Id: I2ab861464cdbbb1c1b0a5a7231f960d8ed9e90c6
This commit is contained in:
Alexandra Gherghina
2014-08-11 12:40:13 +01:00
parent 2d93f36f00
commit 62464b819e
4 changed files with 135 additions and 17 deletions

View File

@@ -369,6 +369,8 @@ public class AccountSettings extends SettingsPreferenceFragment
if (label == null) {
continue;
}
final String titleResPackageName = helper.getPackageForType(accountType);
final int titleResId = helper.getLabelIdForType(accountType);
final Account[] accounts = AccountManager.get(getActivity())
.getAccountsByTypeAsUser(accountType, userHandle);
@@ -382,7 +384,8 @@ public class AccountSettings extends SettingsPreferenceFragment
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountPreference(getActivity(), label,
AccountSyncSettings.class.getName(), fragmentArguments,
titleResPackageName, titleResId, AccountSyncSettings.class.getName(),
fragmentArguments,
helper.getDrawableForType(getActivity(), accountType)));
} else {
final Bundle fragmentArguments = new Bundle();
@@ -392,7 +395,8 @@ public class AccountSettings extends SettingsPreferenceFragment
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountPreference(getActivity(), label,
ManageAccountsSettings.class.getName(), fragmentArguments,
titleResPackageName, titleResId, ManageAccountsSettings.class.getName(),
fragmentArguments,
helper.getDrawableForType(getActivity(), accountType)));
}
helper.preloadDrawableForType(getActivity(), accountType);
@@ -434,6 +438,17 @@ public class AccountSettings extends SettingsPreferenceFragment
*/
private final CharSequence mTitle;
/**
* Packange name used to resolve the resources of the title shown to the user in the new
* fragment.
*/
private final String mTitleResPackageName;
/**
* Resource id of the title shown to the user in the new fragment.
*/
private final int mTitleResId;
/**
* Full class name of the fragment to display when this tile is
* selected.
@@ -447,10 +462,13 @@ public class AccountSettings extends SettingsPreferenceFragment
*/
private final Bundle mFragmentArguments;
public AccountPreference(Context context, CharSequence title, String fragment,
Bundle fragmentArguments, Drawable icon) {
public AccountPreference(Context context, CharSequence title, String titleResPackageName,
int titleResId, String fragment, Bundle fragmentArguments,
Drawable icon) {
super(context);
mTitle = title;
mTitleResPackageName = titleResPackageName;
mTitleResId = titleResId;
mFragment = fragment;
mFragmentArguments = fragmentArguments;
setWidgetLayoutResource(R.layout.account_type_preference);
@@ -464,8 +482,9 @@ public class AccountSettings extends SettingsPreferenceFragment
@Override
public boolean onPreferenceClick(Preference preference) {
if (mFragment != null) {
Utils.startWithFragment(
getContext(), mFragment, mFragmentArguments, null, 0, 0, mTitle);
Utils.startWithFragment(getContext(), mFragment, mFragmentArguments,
null /* resultTo */, 0 /* resultRequestCode */, mTitleResPackageName,
mTitleResId, null /* title */);
return true;
}
return false;