Make user creation flow in a single dialog
Bug: 266548780 Test: atest UserDetailsSettingsTest Change-Id: I3df846aa480b80321269ac7b9b8723912597aba4
This commit is contained in:
@@ -28,7 +28,6 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
@@ -83,6 +82,7 @@ import com.android.settingslib.RestrictedPreference;
|
|||||||
import com.android.settingslib.drawable.CircleFramedDrawable;
|
import com.android.settingslib.drawable.CircleFramedDrawable;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
import com.android.settingslib.search.SearchIndexableRaw;
|
import com.android.settingslib.search.SearchIndexableRaw;
|
||||||
|
import com.android.settingslib.users.CreateUserDialogController;
|
||||||
import com.android.settingslib.users.EditUserInfoController;
|
import com.android.settingslib.users.EditUserInfoController;
|
||||||
import com.android.settingslib.users.GrantAdminDialogController;
|
import com.android.settingslib.users.GrantAdminDialogController;
|
||||||
import com.android.settingslib.users.UserCreatingDialog;
|
import com.android.settingslib.users.UserCreatingDialog;
|
||||||
@@ -119,6 +119,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
/** UserId of the user being removed */
|
/** UserId of the user being removed */
|
||||||
private static final String SAVE_REMOVING_USER = "removing_user";
|
private static final String SAVE_REMOVING_USER = "removing_user";
|
||||||
|
private static final String SAVE_CREATE_USER = "create_user";
|
||||||
|
|
||||||
private static final String KEY_USER_LIST = "user_list";
|
private static final String KEY_USER_LIST = "user_list";
|
||||||
private static final String KEY_USER_ME = "user_me";
|
private static final String KEY_USER_ME = "user_me";
|
||||||
@@ -171,9 +172,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
static final int RESULT_GUEST_REMOVED = 100;
|
static final int RESULT_GUEST_REMOVED = 100;
|
||||||
|
|
||||||
private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED =
|
|
||||||
"key_add_user_long_message_displayed";
|
|
||||||
|
|
||||||
private static final String KEY_TITLE = "title";
|
private static final String KEY_TITLE = "title";
|
||||||
private static final String KEY_SUMMARY = "summary";
|
private static final String KEY_SUMMARY = "summary";
|
||||||
|
|
||||||
@@ -222,6 +220,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
new GrantAdminDialogController();
|
new GrantAdminDialogController();
|
||||||
private EditUserInfoController mEditUserInfoController =
|
private EditUserInfoController mEditUserInfoController =
|
||||||
new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
|
new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
|
||||||
|
private CreateUserDialogController mCreateUserDialogController =
|
||||||
|
new CreateUserDialogController(Utils.FILE_PROVIDER_AUTHORITY);
|
||||||
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
|
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
|
||||||
private GuestTelephonyPreferenceController mGuestTelephonyPreferenceController;
|
private GuestTelephonyPreferenceController mGuestTelephonyPreferenceController;
|
||||||
private RemoveGuestOnExitPreferenceController mRemoveGuestOnExitPreferenceController;
|
private RemoveGuestOnExitPreferenceController mRemoveGuestOnExitPreferenceController;
|
||||||
@@ -233,7 +233,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
private CharSequence mPendingUserName;
|
private CharSequence mPendingUserName;
|
||||||
private Drawable mPendingUserIcon;
|
private Drawable mPendingUserIcon;
|
||||||
private boolean mGrantAdmin;
|
private boolean mPendingUserIsAdmin;
|
||||||
|
|
||||||
// A place to cache the generated default avatar
|
// A place to cache the generated default avatar
|
||||||
private Drawable mDefaultIconDrawable;
|
private Drawable mDefaultIconDrawable;
|
||||||
@@ -348,8 +348,12 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
if (icicle.containsKey(SAVE_REMOVING_USER)) {
|
if (icicle.containsKey(SAVE_REMOVING_USER)) {
|
||||||
mRemovingUserId = icicle.getInt(SAVE_REMOVING_USER);
|
mRemovingUserId = icicle.getInt(SAVE_REMOVING_USER);
|
||||||
}
|
}
|
||||||
|
if (icicle.containsKey(SAVE_CREATE_USER)) {
|
||||||
|
mCreateUserDialogController.onRestoreInstanceState(icicle);
|
||||||
|
} else {
|
||||||
mEditUserInfoController.onRestoreInstanceState(icicle);
|
mEditUserInfoController.onRestoreInstanceState(icicle);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mUserCaps = UserCapabilities.create(activity);
|
mUserCaps = UserCapabilities.create(activity);
|
||||||
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
|
||||||
@@ -440,7 +444,12 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle outState) {
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
if (mCreateUserDialogController.isActive()) {
|
||||||
|
outState.putBoolean(SAVE_CREATE_USER, mCreateUserDialogController.isActive());
|
||||||
|
mCreateUserDialogController.onSaveInstanceState(outState);
|
||||||
|
} else {
|
||||||
mEditUserInfoController.onSaveInstanceState(outState);
|
mEditUserInfoController.onSaveInstanceState(outState);
|
||||||
|
}
|
||||||
outState.putInt(SAVE_REMOVING_USER, mRemovingUserId);
|
outState.putInt(SAVE_REMOVING_USER, mRemovingUserId);
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
@@ -448,6 +457,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void startActivityForResult(Intent intent, int requestCode) {
|
public void startActivityForResult(Intent intent, int requestCode) {
|
||||||
mEditUserInfoController.startingActivityForResult();
|
mEditUserInfoController.startingActivityForResult();
|
||||||
|
mCreateUserDialogController.startingActivityForResult();
|
||||||
super.startActivityForResult(intent, requestCode);
|
super.startActivityForResult(intent, requestCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,6 +572,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
&& resultCode == RESULT_GUEST_REMOVED) {
|
&& resultCode == RESULT_GUEST_REMOVED) {
|
||||||
scheduleGuestCreation();
|
scheduleGuestCreation();
|
||||||
} else {
|
} else {
|
||||||
|
mCreateUserDialogController.onActivityResult(requestCode, resultCode, data);
|
||||||
mEditUserInfoController.onActivityResult(requestCode, resultCode, data);
|
mEditUserInfoController.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -704,37 +715,12 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
.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(
|
synchronized (mUserLock) {
|
||||||
Context.MODE_PRIVATE);
|
mPendingUserName = getString(
|
||||||
final boolean longMessageDisplayed = preferences.getBoolean(
|
com.android.settingslib.R.string.user_new_user_name);
|
||||||
KEY_ADD_USER_LONG_MESSAGE_DISPLAYED, false);
|
mPendingUserIcon = null;
|
||||||
final int messageResId = longMessageDisplayed
|
|
||||||
? com.android.settingslib.R.string.user_add_user_message_short
|
|
||||||
: com.android.settingslib.R.string.user_add_user_message_long;
|
|
||||||
Dialog dlg = new AlertDialog.Builder(context)
|
|
||||||
.setTitle(com.android.settingslib.R.string.user_add_user_title)
|
|
||||||
.setMessage(messageResId)
|
|
||||||
.setPositiveButton(android.R.string.ok,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
if (!longMessageDisplayed) {
|
|
||||||
preferences.edit().putBoolean(
|
|
||||||
KEY_ADD_USER_LONG_MESSAGE_DISPLAYED,
|
|
||||||
true).apply();
|
|
||||||
}
|
}
|
||||||
if (UserManager.isMultipleAdminEnabled()) {
|
return buildAddUserDialog(USER_TYPE_USER);
|
||||||
showDialog(DIALOG_GRANT_ADMIN);
|
|
||||||
} else {
|
|
||||||
showDialog(DIALOG_USER_PROFILE_EDITOR_ADD_USER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
|
||||||
.create();
|
|
||||||
return dlg;
|
|
||||||
}
|
|
||||||
case DIALOG_GRANT_ADMIN: {
|
|
||||||
return buildGrantAdminDialog();
|
|
||||||
}
|
}
|
||||||
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>>();
|
||||||
@@ -919,17 +905,14 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
private Dialog buildAddUserDialog(int userType) {
|
private Dialog buildAddUserDialog(int userType) {
|
||||||
Dialog d;
|
Dialog d;
|
||||||
synchronized (mUserLock) {
|
synchronized (mUserLock) {
|
||||||
d = mEditUserInfoController.createDialog(
|
d = mCreateUserDialogController.createDialog(
|
||||||
getActivity(),
|
getActivity(),
|
||||||
this::startActivityForResult,
|
this::startActivityForResult,
|
||||||
null,
|
UserManager.isMultipleAdminEnabled(),
|
||||||
mPendingUserName.toString(),
|
(userName, userIcon, isAdmin) -> {
|
||||||
getString(userType == USER_TYPE_USER
|
|
||||||
? com.android.settingslib.R.string.user_info_settings_title
|
|
||||||
: com.android.settingslib.R.string.profile_info_settings_title),
|
|
||||||
(userName, userIcon) -> {
|
|
||||||
mPendingUserIcon = userIcon;
|
mPendingUserIcon = userIcon;
|
||||||
mPendingUserName = userName;
|
mPendingUserName = userName;
|
||||||
|
mPendingUserIsAdmin = isAdmin;
|
||||||
addUserNow(userType);
|
addUserNow(userType);
|
||||||
},
|
},
|
||||||
() -> {
|
() -> {
|
||||||
@@ -943,26 +926,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dialog buildGrantAdminDialog() {
|
|
||||||
return mGrantAdminDialogController.createDialog(
|
|
||||||
getActivity(),
|
|
||||||
(grantAdmin) -> {
|
|
||||||
mGrantAdmin = grantAdmin;
|
|
||||||
if (mGrantAdmin) {
|
|
||||||
mMetricsFeatureProvider.action(getActivity(),
|
|
||||||
SettingsEnums.ACTION_GRANT_ADMIN_FROM_SETTINGS_CREATION_DIALOG);
|
|
||||||
} else {
|
|
||||||
mMetricsFeatureProvider.action(getActivity(),
|
|
||||||
SettingsEnums.ACTION_NOT_GRANT_ADMIN_FROM_SETTINGS_CREATION_DIALOG);
|
|
||||||
}
|
|
||||||
showDialog(DIALOG_USER_PROFILE_EDITOR_ADD_USER);
|
|
||||||
},
|
|
||||||
() -> {
|
|
||||||
mGrantAdmin = false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getDialogMetricsCategory(int dialogId) {
|
public int getDialogMetricsCategory(int dialogId) {
|
||||||
switch (dialogId) {
|
switch (dialogId) {
|
||||||
@@ -1065,7 +1028,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
userName,
|
userName,
|
||||||
mUserManager.USER_TYPE_FULL_SECONDARY,
|
mUserManager.USER_TYPE_FULL_SECONDARY,
|
||||||
0);
|
0);
|
||||||
if (mGrantAdmin) {
|
if (mPendingUserIsAdmin) {
|
||||||
mUserManager.setUserAdmin(user.id);
|
mUserManager.setUserAdmin(user.id);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1665,6 +1628,9 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
synchronized (mUserLock) {
|
synchronized (mUserLock) {
|
||||||
mRemovingUserId = -1;
|
mRemovingUserId = -1;
|
||||||
updateUserList();
|
updateUserList();
|
||||||
|
if (mCreateUserDialogController.isActive()) {
|
||||||
|
mCreateUserDialogController.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user