Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3956)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java

Issue 2912413002: Use PreferenceCategory instead of manual preference ordering (Closed)
Patch Set: Rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/res/xml/account_management_preferences.xml ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
index 74f96a68931a37c0902e90c1839c5bf1e71ff3fb..0d0de89a8d85f11498c4b0cac97eff6afe603362 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
@@ -28,6 +28,7 @@ import android.os.Bundle;
import android.os.UserManager;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
+import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.support.annotation.Nullable;
@@ -58,7 +59,6 @@ import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.components.signin.AccountManagerHelper;
import org.chromium.components.signin.ChromeSigninController;
-import java.util.ArrayList;
import java.util.HashMap;
/**
@@ -87,13 +87,6 @@ public class AccountManagementFragment extends PreferenceFragment
*/
public static final String SHOW_GAIA_SERVICE_TYPE_EXTRA = "ShowGAIAServiceType";
- /**
- * Account name preferences will be ordered sequentially, starting with this "order" value.
- * This ensures that the account name preferences appear in the correct location in the
- * preference fragment. See account_management_preferences.xml for details.
- */
- private static final int FIRST_ACCOUNT_PREF_ORDER = 100;
-
/**
* SharedPreference name for the preference that disables signing out of Chrome.
* Signing out is forever disabled once Chrome signs the user in automatically
@@ -106,7 +99,7 @@ public class AccountManagementFragment extends PreferenceFragment
private static String sChildAccountId;
private static Bitmap sCachedBadgedPicture;
- public static final String PREF_ADD_ACCOUNT = "add_account";
+ public static final String PREF_ACCOUNTS_CATEGORY = "accounts_category";
public static final String PREF_PARENTAL_SETTINGS = "parental_settings";
public static final String PREF_PARENT_ACCOUNTS = "parent_accounts";
public static final String PREF_CHILD_CONTENT = "child_content";
@@ -121,8 +114,6 @@ public class AccountManagementFragment extends PreferenceFragment
private int mGaiaServiceType;
- private ArrayList<Preference> mAccountsListPreferences = new ArrayList<>();
-
private Profile mProfile;
private String mSignedInAccountName;
@@ -233,7 +224,6 @@ public class AccountManagementFragment extends PreferenceFragment
getActivity().setTitle(fullName);
configureSignOutSwitch();
- configureAddAccountPreference();
configureChildAccountPreferences();
configureSyncSettings();
configureGoogleActivityControls();
@@ -331,43 +321,6 @@ public class AccountManagementFragment extends PreferenceFragment
});
}
- private void configureAddAccountPreference() {
- ChromeBasePreference addAccount = (ChromeBasePreference) findPreference(PREF_ADD_ACCOUNT);
-
- if (mProfile.isChild()) {
- getPreferenceScreen().removePreference(addAccount);
- } else {
- addAccount.setTitle(getResources().getString(
- R.string.account_management_add_account_title));
- addAccount.setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- if (!isVisible() || !isResumed()) return false;
-
- AccountManagementScreenHelper.logEvent(
- ProfileAccountManagementMetrics.ADD_ACCOUNT,
- mGaiaServiceType);
-
- AccountAdder.getInstance().addAccount(
- getActivity(), AccountAdder.ADD_ACCOUNT_RESULT);
-
- // Return to the last opened tab if triggered from the content area.
- if (mGaiaServiceType != AccountManagementScreenHelper.GAIA_SERVICE_TYPE_NONE) {
- if (isAdded()) getActivity().finish();
- }
-
- return true;
- }
- });
- addAccount.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() {
- @Override
- public boolean isPreferenceControlledByPolicy(Preference preference) {
- return !canAddAccounts();
- }
- });
- }
- }
-
private void configureChildAccountPreferences() {
Preference parentAccounts = findPreference(PREF_PARENT_ACCOUNTS);
Preference childContent = findPreference(PREF_CHILD_CONTENT);
@@ -420,22 +373,18 @@ public class AccountManagementFragment extends PreferenceFragment
}
private void updateAccountsList() {
- PreferenceScreen prefScreen = getPreferenceScreen();
- if (prefScreen == null) return;
+ PreferenceCategory accountsCategory =
+ (PreferenceCategory) findPreference(PREF_ACCOUNTS_CATEGORY);
+ if (accountsCategory == null) return;
- for (int i = 0; i < mAccountsListPreferences.size(); i++) {
- prefScreen.removePreference(mAccountsListPreferences.get(i));
- }
- mAccountsListPreferences.clear();
+ accountsCategory.removeAll();
+ boolean isChildAccount = mProfile.isChild();
Account[] accounts = AccountManagerHelper.get().getGoogleAccounts();
- int nextPrefOrder = FIRST_ACCOUNT_PREF_ORDER;
-
for (final Account account : accounts) {
ChromeBasePreference pref = new ChromeBasePreference(getActivity());
pref.setTitle(account.name);
- boolean isChildAccount = mProfile.isChild();
pref.setUseReducedPadding(isChildAccount);
pref.setIcon(new BitmapDrawable(getResources(),
isChildAccount ? getBadgedUserPicture(account.name, getResources()) :
@@ -450,12 +399,46 @@ public class AccountManagementFragment extends PreferenceFragment
}
});
- pref.setOrder(nextPrefOrder++);
- prefScreen.addPreference(pref);
- mAccountsListPreferences.add(pref);
+ accountsCategory.addPreference(pref);
+ }
+
+ if (!isChildAccount) {
+ accountsCategory.addPreference(createAddAccountPreference());
}
}
+ private ChromeBasePreference createAddAccountPreference() {
+ ChromeBasePreference addAccountPreference = new ChromeBasePreference(getActivity());
+ addAccountPreference.setIcon(R.drawable.add_circle_blue);
+ addAccountPreference.setTitle(R.string.account_management_add_account_title);
+ addAccountPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ if (!isVisible() || !isResumed()) return false;
+
+ AccountManagementScreenHelper.logEvent(
+ ProfileAccountManagementMetrics.ADD_ACCOUNT, mGaiaServiceType);
+
+ AccountAdder.getInstance().addAccount(
+ getActivity(), AccountAdder.ADD_ACCOUNT_RESULT);
+
+ // Return to the last opened tab if triggered from the content area.
+ if (mGaiaServiceType != AccountManagementScreenHelper.GAIA_SERVICE_TYPE_NONE) {
+ if (isAdded()) getActivity().finish();
+ }
+
+ return true;
+ }
+ });
+ addAccountPreference.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() {
+ @Override
+ public boolean isPreferenceControlledByPolicy(Preference preference) {
+ return !canAddAccounts();
+ }
+ });
+ return addAccountPreference;
+ }
+
// ProfileDownloader.Observer implementation:
@Override
« no previous file with comments | « chrome/android/java/res/xml/account_management_preferences.xml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698