Move Auto sync data prefs from user to account screen

Change-Id: Idb69ed49c6e21f93cafa593ba5e7dffa32f377b7
Fixes: 73739376
Test: existing robotests & atest
This commit is contained in:
Fan Zhang
2018-03-07 15:42:53 -08:00
parent d9eba6b856
commit ad47e1aada
4 changed files with 108 additions and 136 deletions

View File

@@ -23,6 +23,25 @@
<PreferenceCategory <PreferenceCategory
android:key="dashboard_tile_placeholder" 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> </PreferenceScreen>

View File

@@ -16,7 +16,6 @@
<PreferenceScreen <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:key="user_settings_screen" android:key="user_settings_screen"
android:title="@string/user_settings_title"> android:title="@string/user_settings_title">
@@ -32,25 +31,6 @@
android:icon="@drawable/ic_menu_add" android:icon="@drawable/ic_menu_add"
android:order="20"/> 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 <com.android.settingslib.RestrictedSwitchPreference
android:key="user_settings_add_users_when_locked" android:key="user_settings_add_users_when_locked"
android:title="@string/user_add_on_lockscreen_menu" android:title="@string/user_add_on_lockscreen_menu"

View File

@@ -29,6 +29,9 @@ import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.SummaryLoader; import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.search.BaseSearchIndexProvider; 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.accounts.AuthenticatorHelper;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -69,6 +72,9 @@ public class AccountDashboardFragment extends DashboardFragment {
new AccountPreferenceController(context, this, authorities); new AccountPreferenceController(context, this, authorities);
getLifecycle().addObserver(accountPrefController); getLifecycle().addObserver(accountPrefController);
controllers.add(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; return controllers;
} }

View File

@@ -148,9 +148,6 @@ public class UserSettings extends SettingsPreferenceFragment
private EditUserInfoController mEditUserInfoController = new EditUserInfoController(); private EditUserInfoController mEditUserInfoController = new EditUserInfoController();
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController; private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
private AutoSyncDataPreferenceController mAutoSyncDataPreferenceController;
private AutoSyncPersonalDataPreferenceController mAutoSyncPersonalDataPreferenceController;
private AutoSyncWorkDataPreferenceController mAutoSyncWorkDataPreferenceController;
// A place to cache the generated default avatar // A place to cache the generated default avatar
private Drawable mDefaultIconDrawable; private Drawable mDefaultIconDrawable;
@@ -159,15 +156,15 @@ public class UserSettings extends SettingsPreferenceFragment
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case MESSAGE_UPDATE_LIST: case MESSAGE_UPDATE_LIST:
updateUserList(); updateUserList();
break; break;
case MESSAGE_SETUP_USER: case MESSAGE_SETUP_USER:
onUserCreated(msg.arg1); onUserCreated(msg.arg1);
break; break;
case MESSAGE_CONFIG_USER: case MESSAGE_CONFIG_USER:
onManageUserClicked(msg.arg1, true); onManageUserClicked(msg.arg1, true);
break; break;
} }
} }
}; };
@@ -203,17 +200,9 @@ public class UserSettings extends SettingsPreferenceFragment
final Context context = getActivity(); final Context context = getActivity();
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController( mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
context, KEY_ADD_USER_WHEN_LOCKED, getLifecycle()); 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(); final PreferenceScreen screen = getPreferenceScreen();
mAddUserWhenLockedPreferenceController.displayPreference(screen); mAddUserWhenLockedPreferenceController.displayPreference(screen);
mAutoSyncDataPreferenceController.displayPreference(screen);
mAutoSyncPersonalDataPreferenceController.displayPreference(screen);
mAutoSyncWorkDataPreferenceController.displayPreference(screen);
screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey()) screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
.setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController); .setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
@@ -274,22 +263,10 @@ public class UserSettings extends SettingsPreferenceFragment
} }
final PreferenceScreen screen = getPreferenceScreen(); final PreferenceScreen screen = getPreferenceScreen();
if (mAutoSyncDataPreferenceController.isAvailable()) {
mAutoSyncDataPreferenceController.updateState(screen.findPreference(
mAutoSyncDataPreferenceController.getPreferenceKey()));
}
if (mAddUserWhenLockedPreferenceController.isAvailable()) { if (mAddUserWhenLockedPreferenceController.isAvailable()) {
mAddUserWhenLockedPreferenceController.updateState(screen.findPreference( mAddUserWhenLockedPreferenceController.updateState(screen.findPreference(
mAddUserWhenLockedPreferenceController.getPreferenceKey())); mAddUserWhenLockedPreferenceController.getPreferenceKey()));
} }
if (mAutoSyncPersonalDataPreferenceController.isAvailable()) {
mAutoSyncPersonalDataPreferenceController.updateState(screen.findPreference(
mAutoSyncPersonalDataPreferenceController.getPreferenceKey()));
}
if (mAutoSyncWorkDataPreferenceController.isAvailable()) {
mAutoSyncWorkDataPreferenceController.updateState(screen.findPreference(
mAutoSyncWorkDataPreferenceController.getPreferenceKey()));
}
if (mShouldUpdateUserList) { if (mShouldUpdateUserList) {
mUserCaps.updateAddUserCapabilities(getActivity()); mUserCaps.updateAddUserCapabilities(getActivity());
@@ -329,20 +306,6 @@ public class UserSettings extends SettingsPreferenceFragment
super.startActivityForResult(intent, requestCode); super.startActivityForResult(intent, requestCode);
} }
@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 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
int pos = 0; int pos = 0;
@@ -438,16 +401,16 @@ public class UserSettings extends SettingsPreferenceFragment
synchronized (mUserLock) { synchronized (mUserLock) {
if (mRemovingUserId == -1 && !mAddingUser) { if (mRemovingUserId == -1 && !mAddingUser) {
switch (userType) { switch (userType) {
case USER_TYPE_USER: case USER_TYPE_USER:
showDialog(DIALOG_ADD_USER); showDialog(DIALOG_ADD_USER);
break; break;
case USER_TYPE_RESTRICTED_PROFILE: case USER_TYPE_RESTRICTED_PROFILE:
if (hasLockscreenSecurity()) { if (hasLockscreenSecurity()) {
addUserNow(USER_TYPE_RESTRICTED_PROFILE); addUserNow(USER_TYPE_RESTRICTED_PROFILE);
} else { } else {
showDialog(DIALOG_NEED_LOCKSCREEN); showDialog(DIALOG_NEED_LOCKSCREEN);
} }
break; break;
} }
} }
} }
@@ -556,9 +519,9 @@ public class UserSettings extends SettingsPreferenceFragment
} }
case DIALOG_USER_CANNOT_MANAGE: case DIALOG_USER_CANNOT_MANAGE:
return new AlertDialog.Builder(context) return new AlertDialog.Builder(context)
.setMessage(R.string.user_cannot_manage_message) .setMessage(R.string.user_cannot_manage_message)
.setPositiveButton(android.R.string.ok, null) .setPositiveButton(android.R.string.ok, null)
.create(); .create();
case DIALOG_ADD_USER: { case DIALOG_ADD_USER: {
final SharedPreferences preferences = getActivity().getPreferences( final SharedPreferences preferences = getActivity().getPreferences(
Context.MODE_PRIVATE); Context.MODE_PRIVATE);
@@ -570,55 +533,56 @@ public class UserSettings extends SettingsPreferenceFragment
final int userType = dialogId == DIALOG_ADD_USER final int userType = dialogId == DIALOG_ADD_USER
? USER_TYPE_USER : USER_TYPE_RESTRICTED_PROFILE; ? USER_TYPE_USER : USER_TYPE_RESTRICTED_PROFILE;
Dialog dlg = new AlertDialog.Builder(context) Dialog dlg = new AlertDialog.Builder(context)
.setTitle(R.string.user_add_user_title) .setTitle(R.string.user_add_user_title)
.setMessage(messageResId) .setMessage(messageResId)
.setPositiveButton(android.R.string.ok, .setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
addUserNow(userType); addUserNow(userType);
if (!longMessageDisplayed) { if (!longMessageDisplayed) {
preferences.edit().putBoolean( preferences.edit().putBoolean(
KEY_ADD_USER_LONG_MESSAGE_DISPLAYED, true).apply(); KEY_ADD_USER_LONG_MESSAGE_DISPLAYED,
} true).apply();
} }
}) }
.setNegativeButton(android.R.string.cancel, null) })
.create(); .setNegativeButton(android.R.string.cancel, null)
.create();
return dlg; return dlg;
} }
case DIALOG_SETUP_USER: { case DIALOG_SETUP_USER: {
Dialog dlg = new AlertDialog.Builder(context) Dialog dlg = new AlertDialog.Builder(context)
.setTitle(R.string.user_setup_dialog_title) .setTitle(R.string.user_setup_dialog_title)
.setMessage(R.string.user_setup_dialog_message) .setMessage(R.string.user_setup_dialog_message)
.setPositiveButton(R.string.user_setup_button_setup_now, .setPositiveButton(R.string.user_setup_button_setup_now,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
switchUserNow(mAddedUserId); switchUserNow(mAddedUserId);
} }
}) })
.setNegativeButton(R.string.user_setup_button_setup_later, null) .setNegativeButton(R.string.user_setup_button_setup_later, null)
.create(); .create();
return dlg; return dlg;
} }
case DIALOG_SETUP_PROFILE: { case DIALOG_SETUP_PROFILE: {
Dialog dlg = new AlertDialog.Builder(context) Dialog dlg = new AlertDialog.Builder(context)
.setMessage(R.string.user_setup_profile_dialog_message) .setMessage(R.string.user_setup_profile_dialog_message)
.setPositiveButton(android.R.string.ok, .setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
switchUserNow(mAddedUserId); switchUserNow(mAddedUserId);
} }
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.create(); .create();
return dlg; return dlg;
} }
case DIALOG_CHOOSE_USER_TYPE: { case DIALOG_CHOOSE_USER_TYPE: {
List<HashMap<String, String>> data = new ArrayList<HashMap<String,String>>(); List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
HashMap<String,String> addUserItem = new 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_TITLE, getString(R.string.user_add_user_item_title));
addUserItem.put(KEY_SUMMARY, getString(R.string.user_add_user_item_summary)); 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_TITLE, getString(R.string.user_add_profile_item_title));
addProfileItem.put(KEY_SUMMARY, getString(R.string.user_add_profile_item_summary)); addProfileItem.put(KEY_SUMMARY, getString(R.string.user_add_profile_item_summary));
data.add(addUserItem); data.add(addUserItem);
@@ -891,7 +855,7 @@ public class UserSettings extends SettingsPreferenceFragment
// Add a virtual Guest user for guest defaults // Add a virtual Guest user for guest defaults
UserPreference pref = new UserPreference(getPrefContext(), null, UserPreference pref = new UserPreference(getPrefContext(), null,
UserPreference.USERID_GUEST_DEFAULTS, UserPreference.USERID_GUEST_DEFAULTS,
mUserCaps.mIsAdmin && voiceCapable? this : null /* settings icon handler */, mUserCaps.mIsAdmin && voiceCapable ? this : null /* settings icon handler */,
null /* delete icon handler */); null /* delete icon handler */);
pref.setTitle(R.string.user_guest); pref.setTitle(R.string.user_guest);
pref.setIcon(getEncircledDefaultIcon()); pref.setIcon(getEncircledDefaultIcon());
@@ -1061,20 +1025,20 @@ public class UserSettings extends SettingsPreferenceFragment
if (v.getTag() instanceof UserPreference) { if (v.getTag() instanceof UserPreference) {
int userId = ((UserPreference) v.getTag()).getUserId(); int userId = ((UserPreference) v.getTag()).getUserId();
switch (v.getId()) { switch (v.getId()) {
case UserPreference.DELETE_ID: case UserPreference.DELETE_ID:
final EnforcedAdmin removeDisallowedAdmin = final EnforcedAdmin removeDisallowedAdmin =
RestrictedLockUtils.checkIfRestrictionEnforced(getContext(), RestrictedLockUtils.checkIfRestrictionEnforced(getContext(),
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId()); UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
if (removeDisallowedAdmin != null) { if (removeDisallowedAdmin != null) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
removeDisallowedAdmin); removeDisallowedAdmin);
} else { } else {
onRemoveUserClicked(userId); onRemoveUserClicked(userId);
} }
break; break;
case UserPreference.SETTINGS_ID: case UserPreference.SETTINGS_ID:
onManageUserClicked(userId, false); onManageUserClicked(userId, false);
break; break;
} }
} }
} }
@@ -1106,8 +1070,9 @@ public class UserSettings extends SettingsPreferenceFragment
* Returns a default user icon (as a {@link Bitmap}) for the given user. * 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}. * Note that for guest users, you should pass in {@code UserHandle.USER_NULL}.
*
* @param resources resources object to fetch the user icon. * @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) { private static Bitmap getDefaultUserIconAsBitmap(Resources resources, int userId) {
Bitmap bitmap = null; Bitmap bitmap = null;
@@ -1124,6 +1089,7 @@ public class UserSettings extends SettingsPreferenceFragment
/** /**
* Assign the default photo to user with {@paramref userId} * Assign the default photo to user with {@paramref userId}
*
* @param context used to get the {@link UserManager} * @param context used to get the {@link UserManager}
* @param userId used to get the icon bitmap * @param userId used to get the icon bitmap
* @return true if assign photo successfully, false if failed * @return true if assign photo successfully, false if failed
@@ -1160,7 +1126,8 @@ public class UserSettings extends SettingsPreferenceFragment
um.setUserIcon(userId, icon); um.setUserIcon(userId, icon);
try { try {
avatarDataStream.close(); avatarDataStream.close();
} catch (IOException ioe) { } } catch (IOException ioe) {
}
} }
private static class SummaryProvider implements SummaryLoader.SummaryProvider { private static class SummaryProvider implements SummaryLoader.SummaryProvider {
@@ -1177,9 +1144,9 @@ public class UserSettings extends SettingsPreferenceFragment
public void setListening(boolean listening) { public void setListening(boolean listening) {
if (listening) { if (listening) {
UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo( UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo(
UserHandle.myUserId()); UserHandle.myUserId());
mSummaryLoader.setSummary(this, mContext.getString(R.string.users_summary, mSummaryLoader.setSummary(this, mContext.getString(R.string.users_summary,
info.name)); info.name));
} }
} }
} }