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) {