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:
@@ -439,21 +439,36 @@ public class Settings extends PreferenceActivity
|
|||||||
List<Header> accountHeaders = new ArrayList<Header>(accountTypes.length);
|
List<Header> accountHeaders = new ArrayList<Header>(accountTypes.length);
|
||||||
for (String accountType : accountTypes) {
|
for (String accountType : accountTypes) {
|
||||||
CharSequence label = mAuthenticatorHelper.getLabelForType(this, accountType);
|
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();
|
Header accHeader = new Header();
|
||||||
accHeader.title = label;
|
accHeader.title = label;
|
||||||
if (accHeader.extras == null) {
|
if (accHeader.extras == null) {
|
||||||
accHeader.extras = new Bundle();
|
accHeader.extras = new Bundle();
|
||||||
}
|
}
|
||||||
accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
|
if (skipToAccount) {
|
||||||
accHeader.breadCrumbTitle = label;
|
accHeader.breadCrumbTitleRes = R.string.account_sync_settings_title;
|
||||||
accHeader.breadCrumbShortTitle = label;
|
accHeader.breadCrumbShortTitleRes = R.string.account_sync_settings_title;
|
||||||
accHeader.fragment = ManageAccountsSettings.class.getName();
|
accHeader.fragment = AccountSyncSettings.class.getName();
|
||||||
accHeader.fragmentArguments = new Bundle();
|
accHeader.fragmentArguments = new Bundle();
|
||||||
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE,
|
// Need this for the icon
|
||||||
accountType);
|
accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
|
||||||
if (!isMultiPane()) {
|
accHeader.extras.putParcelable(AccountSyncSettings.ACCOUNT_KEY, accounts[0]);
|
||||||
accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
|
accHeader.fragmentArguments.putParcelable(AccountSyncSettings.ACCOUNT_KEY,
|
||||||
label.toString());
|
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);
|
accountHeaders.add(accHeader);
|
||||||
}
|
}
|
||||||
@@ -642,8 +657,8 @@ public class Settings extends PreferenceActivity
|
|||||||
|
|
||||||
//$FALL-THROUGH$
|
//$FALL-THROUGH$
|
||||||
case HEADER_TYPE_NORMAL:
|
case HEADER_TYPE_NORMAL:
|
||||||
if (header.extras != null && header.extras.containsKey(
|
if (header.extras != null
|
||||||
ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
|
&& header.extras.containsKey(ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
|
||||||
String accType = header.extras.getString(
|
String accType = header.extras.getString(
|
||||||
ManageAccountsSettings.KEY_ACCOUNT_TYPE);
|
ManageAccountsSettings.KEY_ACCOUNT_TYPE);
|
||||||
ViewGroup.LayoutParams lp = holder.icon.getLayoutParams();
|
ViewGroup.LayoutParams lp = holder.icon.getLayoutParams();
|
||||||
|
@@ -124,4 +124,14 @@ public class AuthenticatorHelper {
|
|||||||
public AuthenticatorDescription getAccountTypeDescription(String accountType) {
|
public AuthenticatorDescription getAccountTypeDescription(String accountType) {
|
||||||
return mTypeToAuthDescription.get(accountType);
|
return mTypeToAuthDescription.get(accountType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasAccountPreferences(final String accountType) {
|
||||||
|
if (containsAccountType(accountType)) {
|
||||||
|
AuthenticatorDescription desc = getAccountTypeDescription(accountType);
|
||||||
|
if (desc != null && desc.accountPreferencesId != 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user