OSDN Git Service

Move Auto sync data prefs from user to account screen
authorFan Zhang <zhfan@google.com>
Wed, 7 Mar 2018 23:42:53 +0000 (15:42 -0800)
committerFan Zhang <zhfan@google.com>
Wed, 7 Mar 2018 23:53:18 +0000 (15:53 -0800)
Change-Id: Idb69ed49c6e21f93cafa593ba5e7dffa32f377b7
Fixes: 73739376
Test: existing robotests & atest

res/xml/accounts_dashboard_settings.xml
res/xml/user_settings.xml
src/com/android/settings/accounts/AccountDashboardFragment.java
src/com/android/settings/users/UserSettings.java

index 1e29d0a..6b5f825 100644 (file)
 
     <PreferenceCategory
         android:key="dashboard_tile_placeholder"
-        android:order="200"/>
+        android:order="30"/>
+
+    <SwitchPreference
+        android:key="auto_sync_account_data"
+        android:title="@string/auto_sync_account_title"
+        android:summary="@string/auto_sync_account_summary"
+        android:order="102"
+        settings:allowDividerAbove="true"/>
+
+    <SwitchPreference
+        android:key="auto_sync_work_account_data"
+        android:title="@string/account_settings_menu_auto_sync_work"
+        android:summary="@string/auto_sync_account_summary"
+        android:order="103"/>
+
+    <SwitchPreference
+        android:key="auto_sync_personal_account_data"
+        android:title="@string/account_settings_menu_auto_sync_personal"
+        android:summary="@string/auto_sync_account_summary"
+        android:order="104"/>
 
 </PreferenceScreen>
index 32b46d9..7fa735d 100644 (file)
@@ -16,7 +16,6 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="user_settings_screen"
     android:title="@string/user_settings_title">
 
         android:icon="@drawable/ic_menu_add"
         android:order="20"/>
 
-    <SwitchPreference
-        android:key="auto_sync_account_data"
-        android:title="@string/auto_sync_account_title"
-        android:summary="@string/auto_sync_account_summary"
-        android:order="102"
-        settings:allowDividerAbove="true"/>
-
-    <SwitchPreference
-        android:key="auto_sync_work_account_data"
-        android:title="@string/account_settings_menu_auto_sync_work"
-        android:summary="@string/auto_sync_account_summary"
-        android:order="103"/>
-
-    <SwitchPreference
-        android:key="auto_sync_personal_account_data"
-        android:title="@string/account_settings_menu_auto_sync_personal"
-        android:summary="@string/auto_sync_account_summary"
-        android:order="104"/>
-
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="user_settings_add_users_when_locked"
         android:title="@string/user_add_on_lockscreen_menu"
index cab5dab..b976940 100644 (file)
@@ -29,6 +29,9 @@ import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.users.AutoSyncDataPreferenceController;
+import com.android.settings.users.AutoSyncPersonalDataPreferenceController;
+import com.android.settings.users.AutoSyncWorkDataPreferenceController;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 import com.android.settingslib.core.AbstractPreferenceController;
 
@@ -69,6 +72,9 @@ public class AccountDashboardFragment extends DashboardFragment {
                 new AccountPreferenceController(context, this, authorities);
         getLifecycle().addObserver(accountPrefController);
         controllers.add(accountPrefController);
+        controllers.add(new AutoSyncDataPreferenceController(context, this /*parent */));
+        controllers.add(new AutoSyncPersonalDataPreferenceController(context, this /*parent */));
+        controllers.add(new AutoSyncWorkDataPreferenceController(context, this /* parent */));
         return controllers;
     }
 
index 4ca7e63..bc02b30 100644 (file)
@@ -148,9 +148,6 @@ public class UserSettings extends SettingsPreferenceFragment
 
     private EditUserInfoController mEditUserInfoController = new EditUserInfoController();
     private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
-    private AutoSyncDataPreferenceController mAutoSyncDataPreferenceController;
-    private AutoSyncPersonalDataPreferenceController mAutoSyncPersonalDataPreferenceController;
-    private AutoSyncWorkDataPreferenceController mAutoSyncWorkDataPreferenceController;
 
     // A place to cache the generated default avatar
     private Drawable mDefaultIconDrawable;
@@ -159,15 +156,15 @@ public class UserSettings extends SettingsPreferenceFragment
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
-            case MESSAGE_UPDATE_LIST:
-                updateUserList();
-                break;
-            case MESSAGE_SETUP_USER:
-                onUserCreated(msg.arg1);
-                break;
-            case MESSAGE_CONFIG_USER:
-                onManageUserClicked(msg.arg1, true);
-                break;
+                case MESSAGE_UPDATE_LIST:
+                    updateUserList();
+                    break;
+                case MESSAGE_SETUP_USER:
+                    onUserCreated(msg.arg1);
+                    break;
+                case MESSAGE_CONFIG_USER:
+                    onManageUserClicked(msg.arg1, true);
+                    break;
             }
         }
     };
@@ -203,17 +200,9 @@ public class UserSettings extends SettingsPreferenceFragment
         final Context context = getActivity();
         mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
                 context, KEY_ADD_USER_WHEN_LOCKED, getLifecycle());
-        mAutoSyncDataPreferenceController = new AutoSyncDataPreferenceController(context, this);
-        mAutoSyncPersonalDataPreferenceController =
-                new AutoSyncPersonalDataPreferenceController(context, this);
-        mAutoSyncWorkDataPreferenceController =
-                new AutoSyncWorkDataPreferenceController(context, this);
-
         final PreferenceScreen screen = getPreferenceScreen();
         mAddUserWhenLockedPreferenceController.displayPreference(screen);
-        mAutoSyncDataPreferenceController.displayPreference(screen);
-        mAutoSyncPersonalDataPreferenceController.displayPreference(screen);
-        mAutoSyncWorkDataPreferenceController.displayPreference(screen);
+
         screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
                 .setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
 
@@ -274,22 +263,10 @@ public class UserSettings extends SettingsPreferenceFragment
         }
         final PreferenceScreen screen = getPreferenceScreen();
 
-        if (mAutoSyncDataPreferenceController.isAvailable()) {
-            mAutoSyncDataPreferenceController.updateState(screen.findPreference(
-                    mAutoSyncDataPreferenceController.getPreferenceKey()));
-        }
         if (mAddUserWhenLockedPreferenceController.isAvailable()) {
             mAddUserWhenLockedPreferenceController.updateState(screen.findPreference(
                     mAddUserWhenLockedPreferenceController.getPreferenceKey()));
         }
-        if (mAutoSyncPersonalDataPreferenceController.isAvailable()) {
-            mAutoSyncPersonalDataPreferenceController.updateState(screen.findPreference(
-                    mAutoSyncPersonalDataPreferenceController.getPreferenceKey()));
-        }
-        if (mAutoSyncWorkDataPreferenceController.isAvailable()) {
-            mAutoSyncWorkDataPreferenceController.updateState(screen.findPreference(
-                    mAutoSyncWorkDataPreferenceController.getPreferenceKey()));
-        }
 
         if (mShouldUpdateUserList) {
             mUserCaps.updateAddUserCapabilities(getActivity());
@@ -330,20 +307,6 @@ public class UserSettings extends SettingsPreferenceFragment
     }
 
     @Override
-    public boolean onPreferenceTreeClick(Preference preference) {
-        if (mAutoSyncDataPreferenceController.handlePreferenceTreeClick(preference)) {
-            return true;
-        }
-        if (mAutoSyncPersonalDataPreferenceController.handlePreferenceTreeClick(preference)) {
-            return true;
-        }
-        if (mAutoSyncWorkDataPreferenceController.handlePreferenceTreeClick(preference)) {
-            return true;
-        }
-        return super.onPreferenceTreeClick(preference);
-    }
-
-    @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         int pos = 0;
         UserManager um = getContext().getSystemService(UserManager.class);
@@ -438,16 +401,16 @@ public class UserSettings extends SettingsPreferenceFragment
         synchronized (mUserLock) {
             if (mRemovingUserId == -1 && !mAddingUser) {
                 switch (userType) {
-                case USER_TYPE_USER:
-                    showDialog(DIALOG_ADD_USER);
-                    break;
-                case USER_TYPE_RESTRICTED_PROFILE:
-                    if (hasLockscreenSecurity()) {
-                        addUserNow(USER_TYPE_RESTRICTED_PROFILE);
-                    } else {
-                        showDialog(DIALOG_NEED_LOCKSCREEN);
-                    }
-                    break;
+                    case USER_TYPE_USER:
+                        showDialog(DIALOG_ADD_USER);
+                        break;
+                    case USER_TYPE_RESTRICTED_PROFILE:
+                        if (hasLockscreenSecurity()) {
+                            addUserNow(USER_TYPE_RESTRICTED_PROFILE);
+                        } else {
+                            showDialog(DIALOG_NEED_LOCKSCREEN);
+                        }
+                        break;
                 }
             }
         }
@@ -556,9 +519,9 @@ public class UserSettings extends SettingsPreferenceFragment
             }
             case DIALOG_USER_CANNOT_MANAGE:
                 return new AlertDialog.Builder(context)
-                    .setMessage(R.string.user_cannot_manage_message)
-                    .setPositiveButton(android.R.string.ok, null)
-                    .create();
+                        .setMessage(R.string.user_cannot_manage_message)
+                        .setPositiveButton(android.R.string.ok, null)
+                        .create();
             case DIALOG_ADD_USER: {
                 final SharedPreferences preferences = getActivity().getPreferences(
                         Context.MODE_PRIVATE);
@@ -570,55 +533,56 @@ public class UserSettings extends SettingsPreferenceFragment
                 final int userType = dialogId == DIALOG_ADD_USER
                         ? USER_TYPE_USER : USER_TYPE_RESTRICTED_PROFILE;
                 Dialog dlg = new AlertDialog.Builder(context)
-                    .setTitle(R.string.user_add_user_title)
-                    .setMessage(messageResId)
-                    .setPositiveButton(android.R.string.ok,
-                        new DialogInterface.OnClickListener() {
-                            public void onClick(DialogInterface dialog, int which) {
-                                addUserNow(userType);
-                                if (!longMessageDisplayed) {
-                                    preferences.edit().putBoolean(
-                                            KEY_ADD_USER_LONG_MESSAGE_DISPLAYED, true).apply();
-                                }
-                            }
-                    })
-                    .setNegativeButton(android.R.string.cancel, null)
-                    .create();
+                        .setTitle(R.string.user_add_user_title)
+                        .setMessage(messageResId)
+                        .setPositiveButton(android.R.string.ok,
+                                new DialogInterface.OnClickListener() {
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        addUserNow(userType);
+                                        if (!longMessageDisplayed) {
+                                            preferences.edit().putBoolean(
+                                                    KEY_ADD_USER_LONG_MESSAGE_DISPLAYED,
+                                                    true).apply();
+                                        }
+                                    }
+                                })
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .create();
                 return dlg;
             }
             case DIALOG_SETUP_USER: {
                 Dialog dlg = new AlertDialog.Builder(context)
-                    .setTitle(R.string.user_setup_dialog_title)
-                    .setMessage(R.string.user_setup_dialog_message)
-                    .setPositiveButton(R.string.user_setup_button_setup_now,
-                        new DialogInterface.OnClickListener() {
-                            public void onClick(DialogInterface dialog, int which) {
-                                switchUserNow(mAddedUserId);
-                            }
-                    })
-                    .setNegativeButton(R.string.user_setup_button_setup_later, null)
-                    .create();
+                        .setTitle(R.string.user_setup_dialog_title)
+                        .setMessage(R.string.user_setup_dialog_message)
+                        .setPositiveButton(R.string.user_setup_button_setup_now,
+                                new DialogInterface.OnClickListener() {
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        switchUserNow(mAddedUserId);
+                                    }
+                                })
+                        .setNegativeButton(R.string.user_setup_button_setup_later, null)
+                        .create();
                 return dlg;
             }
             case DIALOG_SETUP_PROFILE: {
                 Dialog dlg = new AlertDialog.Builder(context)
-                    .setMessage(R.string.user_setup_profile_dialog_message)
-                    .setPositiveButton(android.R.string.ok,
-                        new DialogInterface.OnClickListener() {
-                            public void onClick(DialogInterface dialog, int which) {
-                                switchUserNow(mAddedUserId);
-                            }
-                    })
-                    .setNegativeButton(android.R.string.cancel, null)
-                    .create();
+                        .setMessage(R.string.user_setup_profile_dialog_message)
+                        .setPositiveButton(android.R.string.ok,
+                                new DialogInterface.OnClickListener() {
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        switchUserNow(mAddedUserId);
+                                    }
+                                })
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .create();
                 return dlg;
             }
             case DIALOG_CHOOSE_USER_TYPE: {
-                List<HashMap<String, String>> data = new ArrayList<HashMap<String,String>>();
-                HashMap<String,String> addUserItem = new HashMap<String,String>();
+                List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
+                HashMap<String, String> addUserItem = new HashMap<String, String>();
                 addUserItem.put(KEY_TITLE, getString(R.string.user_add_user_item_title));
                 addUserItem.put(KEY_SUMMARY, getString(R.string.user_add_user_item_summary));
-                HashMap<String,String> addProfileItem = new HashMap<String,String>();
+                HashMap<String, String> addProfileItem = new HashMap<String, String>();
                 addProfileItem.put(KEY_TITLE, getString(R.string.user_add_profile_item_title));
                 addProfileItem.put(KEY_SUMMARY, getString(R.string.user_add_profile_item_summary));
                 data.add(addUserItem);
@@ -891,7 +855,7 @@ public class UserSettings extends SettingsPreferenceFragment
             // Add a virtual Guest user for guest defaults
             UserPreference pref = new UserPreference(getPrefContext(), null,
                     UserPreference.USERID_GUEST_DEFAULTS,
-                    mUserCaps.mIsAdmin && voiceCapable? this : null /* settings icon handler */,
+                    mUserCaps.mIsAdmin && voiceCapable ? this : null /* settings icon handler */,
                     null /* delete icon handler */);
             pref.setTitle(R.string.user_guest);
             pref.setIcon(getEncircledDefaultIcon());
@@ -1061,20 +1025,20 @@ public class UserSettings extends SettingsPreferenceFragment
         if (v.getTag() instanceof UserPreference) {
             int userId = ((UserPreference) v.getTag()).getUserId();
             switch (v.getId()) {
-            case UserPreference.DELETE_ID:
-                final EnforcedAdmin removeDisallowedAdmin =
-                        RestrictedLockUtils.checkIfRestrictionEnforced(getContext(),
-                                UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
-                if (removeDisallowedAdmin != null) {
-                    RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
-                            removeDisallowedAdmin);
-                } else {
-                    onRemoveUserClicked(userId);
-                }
-                break;
-            case UserPreference.SETTINGS_ID:
-                onManageUserClicked(userId, false);
-                break;
+                case UserPreference.DELETE_ID:
+                    final EnforcedAdmin removeDisallowedAdmin =
+                            RestrictedLockUtils.checkIfRestrictionEnforced(getContext(),
+                                    UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
+                    if (removeDisallowedAdmin != null) {
+                        RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
+                                removeDisallowedAdmin);
+                    } else {
+                        onRemoveUserClicked(userId);
+                    }
+                    break;
+                case UserPreference.SETTINGS_ID:
+                    onManageUserClicked(userId, false);
+                    break;
             }
         }
     }
@@ -1106,8 +1070,9 @@ public class UserSettings extends SettingsPreferenceFragment
      * Returns a default user icon (as a {@link Bitmap}) for the given user.
      *
      * Note that for guest users, you should pass in {@code UserHandle.USER_NULL}.
+     *
      * @param resources resources object to fetch the user icon.
-     * @param userId the user id or {@code UserHandle.USER_NULL} for a non-user specific icon
+     * @param userId    the user id or {@code UserHandle.USER_NULL} for a non-user specific icon
      */
     private static Bitmap getDefaultUserIconAsBitmap(Resources resources, int userId) {
         Bitmap bitmap = null;
@@ -1124,6 +1089,7 @@ public class UserSettings extends SettingsPreferenceFragment
 
     /**
      * Assign the default photo to user with {@paramref userId}
+     *
      * @param context used to get the {@link UserManager}
      * @param userId  used to get the icon bitmap
      * @return true if assign photo successfully, false if failed
@@ -1160,7 +1126,8 @@ public class UserSettings extends SettingsPreferenceFragment
         um.setUserIcon(userId, icon);
         try {
             avatarDataStream.close();
-        } catch (IOException ioe) { }
+        } catch (IOException ioe) {
+        }
     }
 
     private static class SummaryProvider implements SummaryLoader.SummaryProvider {
@@ -1177,9 +1144,9 @@ public class UserSettings extends SettingsPreferenceFragment
         public void setListening(boolean listening) {
             if (listening) {
                 UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo(
-                    UserHandle.myUserId());
+                        UserHandle.myUserId());
                 mSummaryLoader.setSummary(this, mContext.getString(R.string.users_summary,
-                    info.name));
+                        info.name));
             }
         }
     }