diff --git a/res/layout/preference_user_delete_widget.xml b/res/layout/preference_user_delete_widget.xml index 994b77a0556..68355ba1db8 100644 --- a/res/layout/preference_user_delete_widget.xml +++ b/res/layout/preference_user_delete_widget.xml @@ -35,7 +35,5 @@ android:src="@drawable/ic_menu_delete_holo_dark" android:contentDescription="@string/user_delete_user_description" android:layout_gravity="center" - android:clickable="true" - android:focusable="true" android:background="?android:attr/selectableItemBackground" /> diff --git a/res/values/strings.xml b/res/values/strings.xml index fb7ff1400a1..2903efa93f9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4283,9 +4283,13 @@ Set up now Not now + + Only the tablet\'s owner can manage users. + + Only the phone\'s owner can manage users. - Remove user + Delete %1$s from this device New user @@ -4293,13 +4297,19 @@ Remove user? - You will lose your space and data on this delete. Are you sure you want to remove the user and all associated data from the device? + You will lose your space and data on this tablet. You can\'t undo this action. + + You will lose your space and data on this phone. You can\'t undo this action. - Are you sure you want to remove the user and all associated data from the device? + This user\'s space and data will disappear from this tablet. You can\'t undo this action. + + This user\'s space and data will disappear from this phone. You can\'t undo this action. Adding new user\u2026 Delete user + + Delete This setting affects all users on this tablet. diff --git a/src/com/android/settings/users/UserPreference.java b/src/com/android/settings/users/UserPreference.java index 2ced7ae6639..23cca739012 100644 --- a/src/com/android/settings/users/UserPreference.java +++ b/src/com/android/settings/users/UserPreference.java @@ -50,8 +50,6 @@ public class UserPreference extends Preference { @Override protected void onBindView(View view) { - view.setClickable(true); - view.setFocusable(true); View deleteView = view.findViewById(R.id.trash_user); if (deleteView != null) { deleteView.setOnClickListener(mDeleteClickListener); diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index c7829cb8f1e..0a5e4960632 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -38,6 +38,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.preference.Preference; +import android.preference.PreferenceScreen; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceGroup; import android.provider.ContactsContract; @@ -75,6 +76,7 @@ public class UserSettings extends SettingsPreferenceFragment private static final int DIALOG_CONFIRM_REMOVE = 1; private static final int DIALOG_ADD_USER = 2; private static final int DIALOG_SETUP_USER = 3; + private static final int DIALOG_USER_CANNOT_MANAGE = 4; private static final int MESSAGE_UPDATE_LIST = 1; private static final int MESSAGE_SETUP_USER = 2; @@ -179,9 +181,10 @@ public class UserSettings extends SettingsPreferenceFragment | MenuItem.SHOW_AS_ACTION_WITH_TEXT); } } else { - MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, 0, R.string.user_remove_user_menu); - removeThisUser.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM - | MenuItem.SHOW_AS_ACTION_WITH_TEXT); + String nickname = mUserManager.getUserName(); + MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, 0, + getResources().getString(R.string.user_remove_user_menu, nickname)); + removeThisUser.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); } super.onCreateOptionsMenu(menu, inflater); } @@ -266,7 +269,7 @@ public class UserSettings extends SettingsPreferenceFragment .setMessage(UserHandle.myUserId() == mRemovingUserId ? R.string.user_confirm_remove_self_message : R.string.user_confirm_remove_message) - .setPositiveButton(android.R.string.ok, + .setPositiveButton(R.string.user_delete_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { removeUserNow(); @@ -274,6 +277,11 @@ public class UserSettings extends SettingsPreferenceFragment }) .setNegativeButton(android.R.string.cancel, null) .create(); + case DIALOG_USER_CANNOT_MANAGE: + return new AlertDialog.Builder(getActivity()) + .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); @@ -385,7 +393,7 @@ public class UserSettings extends SettingsPreferenceFragment continue; } else if (user.id == UserHandle.myUserId()) { pref = mMePreference; - mNicknamePreference.getEditText().setText(user.name); + mNicknamePreference.setText(user.name); mNicknamePreference.setSummary(user.name); } else { pref = new UserPreference(getActivity(), null, user.id, @@ -397,6 +405,9 @@ public class UserSettings extends SettingsPreferenceFragment pref.setSummary(R.string.user_owner); } pref.setTitle(user.name); + if (!isInitialized(user)) { + pref.setSummary(R.string.user_summary_not_set_up); + } } if (user.iconPath != null) { if (mUserIcons.get(user.id) == null) { @@ -475,6 +486,7 @@ public class UserSettings extends SettingsPreferenceFragment private void setUserName(String name) { mUserManager.setUserName(UserHandle.myUserId(), name); mNicknamePreference.setSummary(name); + getActivity().invalidateOptionsMenu(); } @Override @@ -492,10 +504,26 @@ public class UserSettings extends SettingsPreferenceFragment // TODO: Make this a proper API editProfile.putExtra("finishActivityOnSaveCompleted", true); startActivity(editProfile); + } else if (pref instanceof UserPreference) { + int userId = ((UserPreference) pref).getUserId(); + // Get the latest status of the user + UserInfo user = mUserManager.getUserInfo(userId); + if (UserHandle.myUserId() != UserHandle.USER_OWNER) { + showDialog(DIALOG_USER_CANNOT_MANAGE); + } else { + if (!isInitialized(user)) { + mHandler.sendMessage(mHandler.obtainMessage( + MESSAGE_SETUP_USER, user.id, user.serialNumber)); + } + } } return false; } + private boolean isInitialized(UserInfo user) { + return (user.flags & UserInfo.FLAG_INITIALIZED) != 0; + } + @Override public void onClick(View v) { if (v.getTag() instanceof UserPreference) {