Directly go to account sync screen if there's only one account for that type.

Bug: 6629330
Change-Id: Ieb2bad131b1580a6b75d970c9a0ea9980580f66d
This commit is contained in:
Amith Yamasani
2012-06-07 17:03:20 -07:00
parent ffa6f6e3e2
commit 3882c2e215
2 changed files with 37 additions and 12 deletions

View File

@@ -439,21 +439,36 @@ public class Settings extends PreferenceActivity
List<Header> accountHeaders = new ArrayList<Header>(accountTypes.length);
for (String accountType : accountTypes) {
CharSequence label = mAuthenticatorHelper.getLabelForType(this, accountType);
Account[] accounts = AccountManager.get(this).getAccountsByType(accountType);
boolean skipToAccount = accounts.length == 1
&& !mAuthenticatorHelper.hasAccountPreferences(accountType);
Header accHeader = new Header();
accHeader.title = label;
if (accHeader.extras == null) {
accHeader.extras = new Bundle();
}
accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
accHeader.breadCrumbTitle = label;
accHeader.breadCrumbShortTitle = label;
accHeader.fragment = ManageAccountsSettings.class.getName();
accHeader.fragmentArguments = new Bundle();
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE,
accountType);
if (!isMultiPane()) {
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
label.toString());
if (skipToAccount) {
accHeader.breadCrumbTitleRes = R.string.account_sync_settings_title;
accHeader.breadCrumbShortTitleRes = R.string.account_sync_settings_title;
accHeader.fragment = AccountSyncSettings.class.getName();
accHeader.fragmentArguments = new Bundle();
// Need this for the icon
accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
accHeader.extras.putParcelable(AccountSyncSettings.ACCOUNT_KEY, accounts[0]);
accHeader.fragmentArguments.putParcelable(AccountSyncSettings.ACCOUNT_KEY,
accounts[0]);
} else {
accHeader.breadCrumbTitle = label;
accHeader.breadCrumbShortTitle = label;
accHeader.fragment = ManageAccountsSettings.class.getName();
accHeader.fragmentArguments = new Bundle();
accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE,
accountType);
if (!isMultiPane()) {
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
label.toString());
}
}
accountHeaders.add(accHeader);
}
@@ -642,8 +657,8 @@ public class Settings extends PreferenceActivity
//$FALL-THROUGH$
case HEADER_TYPE_NORMAL:
if (header.extras != null && header.extras.containsKey(
ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
if (header.extras != null
&& header.extras.containsKey(ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
String accType = header.extras.getString(
ManageAccountsSettings.KEY_ACCOUNT_TYPE);
ViewGroup.LayoutParams lp = holder.icon.getLayoutParams();