am ed0cf41d: am 99bde108: Merge "Final refactoring of the user/profile settings screen." into jb-mr2-dev

* commit 'ed0cf41d3a36769b0f7b539e0456aff9d1795339':
  Final refactoring of the user/profile settings screen.
This commit is contained in:
Amith Yamasani
2013-04-23 18:53:26 -07:00
committed by Android Git Automerger
5 changed files with 191 additions and 132 deletions

View File

@@ -31,8 +31,8 @@
android:id="@+id/manage_user" android:id="@+id/manage_user"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:paddingStart="12dip" android:paddingStart="16dip"
android:paddingEnd="12dip" android:paddingEnd="16dip"
android:src="@drawable/ic_sysbar_quicksettings" android:src="@drawable/ic_sysbar_quicksettings"
android:contentDescription="@string/user_delete_user_description" android:contentDescription="@string/user_delete_user_description"
android:layout_gravity="center" android:layout_gravity="center"
@@ -48,8 +48,8 @@
android:id="@+id/trash_user" android:id="@+id/trash_user"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:paddingStart="12dip" android:paddingStart="16dip"
android:paddingEnd="12dip" android:paddingEnd="16dip"
android:src="@drawable/ic_menu_delete_holo_dark" android:src="@drawable/ic_menu_delete_holo_dark"
android:contentDescription="@string/user_delete_user_description" android:contentDescription="@string/user_delete_user_description"
android:layout_gravity="center" android:layout_gravity="center"

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:paddingTop="8dip"
android:paddingBottom="8dip">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:ellipsize="marquee"
android:fadingEdge="horizontal"/>
<TextView
android:id="@+id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_alignStart="@id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="4" />
</RelativeLayout>

View File

@@ -4327,37 +4327,32 @@
<!-- User settings screen title [CHAR LIMIT=25] --> <!-- User settings screen title [CHAR LIMIT=25] -->
<string name="user_settings_title">Users</string> <string name="user_settings_title">Users</string>
<!-- User settings section title for details about you [CHAR LIMIT=25] --> <!-- User settings header for list of users and profiles [CHAR LIMIT=40] -->
<string name="user_you_section">You</string> <string name="user_list_title">Users &amp; profiles</string>
<!-- User settings trusted user list section header [CHAR LIMIT=40] -->
<string name="user_trusted_list_title">Users</string>
<!-- User settings limited user list section header [CHAR LIMIT=40] -->
<string name="user_limited_list_title">Limited users</string>
<!-- User settings add user menu [CHAR LIMIT=35] --> <!-- User settings add user menu [CHAR LIMIT=35] -->
<string name="user_add_user_menu">Add user</string> <string name="user_add_user_menu">Add user or profile</string>
<!-- User settings add restricted user label [CHAR LIMIT=35] --> <!-- User settings summary for a restricted profile [CHAR LIMIT=50] -->
<string name="user_add_restricted">Add limited user</string> <string name="user_summary_restricted_profile">Restricted profile</string>
<!-- User settings summary for add restricted user [CHAR LIMIT=100] -->
<string name="user_add_restricted_summary">Limited users can only access the apps and content you select</string>
<!-- User settings add user label [CHAR LIMIT=35] -->
<string name="user_add_trusted">Add standard user</string>
<!-- User settings summary for add trusted user [CHAR LIMIT=100] -->
<string name="user_add_trusted_summary">Standard users have their own apps and content</string>
<!-- User summary to indicate that user is currently active in the background [CHAR LIMIT=100] -->
<string name="user_summary_active">Active</string>
<!-- User summary to indicate that user is currently inactive in the background [CHAR LIMIT=100] -->
<string name="user_summary_inactive">Not active</string>
<!-- User summary to indicate that user is currently not set up [CHAR LIMIT=100] --> <!-- User summary to indicate that user is currently not set up [CHAR LIMIT=100] -->
<string name="user_summary_not_set_up">Not set up</string> <string name="user_summary_not_set_up">Not set up</string>
<!-- Summary text for a trusted user [CHAR LIMIT=50] --> <!-- User summary to indicate that restricted profile is currently not set up [CHAR LIMIT=100] -->
<string name="user_trusted">Trusted</string> <string name="user_summary_restricted_not_set_up">Not set up - Restricted profile</string>
<!-- Summary text for a limited user [CHAR LIMIT=50] -->
<string name="user_limited">Limited</string>
<!-- User information string to represent the owner of the device [CHAR LIMIT=25] --> <!-- User information string to represent the owner of the device [CHAR LIMIT=25] -->
<string name="user_owner">Owner</string> <string name="user_owner">Owner</string>
<!-- User settings title for current user entry "You" user. [CHAR LIMIT=30] -->
<string name="user_you">You (<xliff:g id="name" example="Name">%s</xliff:g>)</string>
<!-- Title for the preference to enter the nickname of the userto display in the user switcher [CHAR LIMIT=25]--> <!-- Title for the preference to enter the nickname of the userto display in the user switcher [CHAR LIMIT=25]-->
<string name="user_nickname">Nickname</string> <string name="user_nickname">Nickname</string>
<!-- Title for add user type dialog [CHAR LIMIT=45] -->
<string name="user_add_user_type_title">Add</string>
<!-- Summary for add user entry in the choice dialog [CHAR LIMIT=none] -->
<string name="user_add_user_item_summary">Users have their own apps and content</string>
<!-- Summary for add restricted profile entry in the choice dialog [CHAR LIMIT=none] -->
<string name="user_add_profile_item_summary">Restricted profiles can only access the apps and content from your accounts</string>
<!-- Button text for adding a regular user [CHAR LIMIT=25] -->
<string name="user_add_user_item_title">User</string>
<!-- Button text for adding a restricted profile [CHAR LIMIT=25] -->
<string name="user_add_profile_item_title">Restricted profile</string>
<!-- Title for add user confirmation dialog [CHAR LIMIT=30] --> <!-- Title for add user confirmation dialog [CHAR LIMIT=30] -->
<string name="user_add_user_title">Add new user</string> <string name="user_add_user_title">Add new user</string>
<!-- Message for add user confirmation dialog - long version. [CHAR LIMIT=none] --> <!-- Message for add user confirmation dialog - long version. [CHAR LIMIT=none] -->
@@ -4368,6 +4363,8 @@
<string name="user_setup_dialog_title">Set up user now?</string> <string name="user_setup_dialog_title">Set up user now?</string>
<!-- Message in dialog to setup a new user after creation [CHAR LIMIT=none] --> <!-- Message in dialog to setup a new user after creation [CHAR LIMIT=none] -->
<string name="user_setup_dialog_message">Make sure the person is available to take the tablet and set up their space</string> <string name="user_setup_dialog_message">Make sure the person is available to take the tablet and set up their space</string>
<!-- Message in dialog to setup a new restricted profile after creation [CHAR LIMIT=none] -->
<string name="user_setup_profile_dialog_message">Set up profile now?</string>
<!-- Button text to setup the new user now [CHAR LIMIT=25] --> <!-- Button text to setup the new user now [CHAR LIMIT=25] -->
<string name="user_setup_button_setup_now">Set up now</string> <string name="user_setup_button_setup_now">Set up now</string>
<!-- Button text to setup the new user later [CHAR LIMIT=25] --> <!-- Button text to setup the new user later [CHAR LIMIT=25] -->
@@ -4383,6 +4380,8 @@
<string name="user_remove_user_menu">Delete <xliff:g id="user_name">%1$s</xliff:g> from this device</string> <string name="user_remove_user_menu">Delete <xliff:g id="user_name">%1$s</xliff:g> from this device</string>
<!-- User details new user name [CHAR LIMIT=30] --> <!-- User details new user name [CHAR LIMIT=30] -->
<string name="user_new_user_name">New user</string> <string name="user_new_user_name">New user</string>
<!-- User details new restricted profile name [CHAR LIMIT=30] -->
<string name="user_new_profile_name">New profile</string>
<!-- User (self) removal confirmation title [CHAR LIMIT=30] --> <!-- User (self) removal confirmation title [CHAR LIMIT=30] -->
<string name="user_confirm_remove_self_title">Delete yourself?</string> <string name="user_confirm_remove_self_title">Delete yourself?</string>
<!-- User removal confirmation title [CHAR LIMIT=25] --> <!-- User removal confirmation title [CHAR LIMIT=25] -->

View File

@@ -19,25 +19,13 @@
android:title="@string/user_settings_title"> android:title="@string/user_settings_title">
<PreferenceCategory <PreferenceCategory
android:key="trusted_user_list" android:key="user_list"
android:title="@string/user_trusted_list_title"> android:title="@string/user_list_title">
</PreferenceCategory> </PreferenceCategory>
<Preference <Preference
android:key="user_add_trusted" android:key="user_add"
android:title="@string/user_add_trusted" android:title="@string/user_add_user_menu"
android:summary="@string/user_add_trusted_summary"
android:icon="@drawable/ic_menu_add" />
<PreferenceCategory
android:key="limited_user_list"
android:title="@string/user_limited_list_title">
</PreferenceCategory>
<Preference
android:key="user_add_restricted"
android:title="@string/user_add_restricted"
android:summary="@string/user_add_restricted_summary"
android:icon="@drawable/ic_menu_add" /> android:icon="@drawable/ic_menu_add" />
</PreferenceScreen> </PreferenceScreen>

View File

@@ -53,6 +53,7 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.SimpleAdapter;
import com.android.settings.OwnerInfoSettings; import com.android.settings.OwnerInfoSettings;
import com.android.settings.R; import com.android.settings.R;
@@ -61,7 +62,9 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils; import com.android.settings.Utils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class UserSettings extends SettingsPreferenceFragment public class UserSettings extends SettingsPreferenceFragment
implements OnPreferenceClickListener, OnClickListener, DialogInterface.OnDismissListener, implements OnPreferenceClickListener, OnClickListener, DialogInterface.OnDismissListener,
@@ -74,26 +77,25 @@ public class UserSettings extends SettingsPreferenceFragment
/** UserId of the user that was just added */ /** UserId of the user that was just added */
private static final String SAVE_ADDING_USER = "adding_user"; private static final String SAVE_ADDING_USER = "adding_user";
private static final String KEY_TRUSTED_USER_LIST = "trusted_user_list"; private static final String KEY_USER_LIST = "user_list";
private static final String KEY_LIMITED_USER_LIST = "limited_user_list";
private static final String KEY_USER_ME = "user_me"; private static final String KEY_USER_ME = "user_me";
private static final String KEY_ADD_RESTRICTED_USER = "user_add_restricted"; private static final String KEY_ADD_USER = "user_add";
private static final String KEY_ADD_TRUSTED_USER = "user_add_trusted";
private static final int MENU_REMOVE_USER = Menu.FIRST; private static final int MENU_REMOVE_USER = Menu.FIRST;
private static final int DIALOG_CONFIRM_REMOVE = 1; private static final int DIALOG_CONFIRM_REMOVE = 1;
private static final int DIALOG_ADD_USER_TRUSTED = 2; private static final int DIALOG_ADD_USER = 2;
private static final int DIALOG_ADD_USER_LIMITED = 3; private static final int DIALOG_SETUP_USER = 3;
private static final int DIALOG_SETUP_USER = 4; private static final int DIALOG_SETUP_PROFILE = 4;
private static final int DIALOG_USER_CANNOT_MANAGE = 5; private static final int DIALOG_USER_CANNOT_MANAGE = 5;
private static final int DIALOG_CHOOSE_USER_TYPE = 6;
private static final int MESSAGE_UPDATE_LIST = 1; private static final int MESSAGE_UPDATE_LIST = 1;
private static final int MESSAGE_SETUP_USER = 2; private static final int MESSAGE_SETUP_USER = 2;
private static final int MESSAGE_CONFIG_USER = 3; private static final int MESSAGE_CONFIG_USER = 3;
private static final int USER_TYPE_TRUSTED = 1; private static final int USER_TYPE_USER = 1;
private static final int USER_TYPE_LIMITED = 2; private static final int USER_TYPE_RESTRICTED_PROFILE = 2;
private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED = private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED =
"key_add_user_long_message_displayed"; "key_add_user_long_message_displayed";
@@ -109,12 +111,13 @@ public class UserSettings extends SettingsPreferenceFragment
R.drawable.avatar_default_8 R.drawable.avatar_default_8
}; };
private PreferenceGroup mTrustedUserListCategory; private static final String KEY_TITLE = "title";
private PreferenceGroup mLimitedUserListCategory; private static final String KEY_SUMMARY = "summary";
private PreferenceGroup mUserListCategory;
private Preference mMePreference; private Preference mMePreference;
private SelectableEditTextPreference mNicknamePreference; private SelectableEditTextPreference mNicknamePreference;
private Preference mAddRestrictedUser; private Preference mAddUser;
private Preference mAddTrustedUser;
private int mRemovingUserId = -1; private int mRemovingUserId = -1;
private int mAddedUserId = 0; private int mAddedUserId = 0;
private boolean mAddingUser; private boolean mAddingUser;
@@ -173,8 +176,7 @@ public class UserSettings extends SettingsPreferenceFragment
mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
addPreferencesFromResource(R.xml.user_settings); addPreferencesFromResource(R.xml.user_settings);
mTrustedUserListCategory = (PreferenceGroup) findPreference(KEY_TRUSTED_USER_LIST); mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST);
mLimitedUserListCategory = (PreferenceGroup) findPreference(KEY_LIMITED_USER_LIST);
mMePreference = new UserPreference(getActivity(), null, UserHandle.myUserId(), mMePreference = new UserPreference(getActivity(), null, UserHandle.myUserId(),
mUserManager.isLinkedUser() ? null : this, null); mUserManager.isLinkedUser() ? null : this, null);
mMePreference.setKey(KEY_USER_ME); mMePreference.setKey(KEY_USER_ME);
@@ -182,13 +184,10 @@ public class UserSettings extends SettingsPreferenceFragment
if (mIsOwner) { if (mIsOwner) {
mMePreference.setSummary(R.string.user_owner); mMePreference.setSummary(R.string.user_owner);
} }
mAddRestrictedUser = findPreference(KEY_ADD_RESTRICTED_USER); mAddUser = findPreference(KEY_ADD_USER);
mAddTrustedUser = findPreference(KEY_ADD_TRUSTED_USER); mAddUser.setOnPreferenceClickListener(this);
mAddRestrictedUser.setOnPreferenceClickListener(this);
mAddTrustedUser.setOnPreferenceClickListener(this);
if (!mIsOwner || UserManager.getMaxSupportedUsers() < 2) { if (!mIsOwner || UserManager.getMaxSupportedUsers() < 2) {
removePreference(KEY_ADD_RESTRICTED_USER); removePreference(KEY_ADD_USER);
removePreference(KEY_ADD_TRUSTED_USER);
} }
loadProfile(); loadProfile();
setHasOptionsMenu(true); setHasOptionsMenu(true);
@@ -266,7 +265,8 @@ public class UserSettings extends SettingsPreferenceFragment
} }
private void finishLoadProfile(String profileName) { private void finishLoadProfile(String profileName) {
mMePreference.setTitle(profileName); if (getActivity() == null) return;
mMePreference.setTitle(getString(R.string.user_you, profileName));
int myUserId = UserHandle.myUserId(); int myUserId = UserHandle.myUserId();
Bitmap b = mUserManager.getUserIcon(myUserId); Bitmap b = mUserManager.getUserIcon(myUserId);
if (b != null) { if (b != null) {
@@ -279,11 +279,11 @@ public class UserSettings extends SettingsPreferenceFragment
synchronized (mUserLock) { synchronized (mUserLock) {
if (mRemovingUserId == -1 && !mAddingUser) { if (mRemovingUserId == -1 && !mAddingUser) {
switch (userType) { switch (userType) {
case USER_TYPE_TRUSTED: case USER_TYPE_USER:
showDialog(DIALOG_ADD_USER_TRUSTED); showDialog(DIALOG_ADD_USER);
break; break;
case USER_TYPE_LIMITED: case USER_TYPE_RESTRICTED_PROFILE:
showDialog(DIALOG_ADD_USER_LIMITED); addUserNow(USER_TYPE_RESTRICTED_PROFILE);
break; break;
} }
} }
@@ -301,7 +301,7 @@ public class UserSettings extends SettingsPreferenceFragment
private UserInfo createLimitedUser() { private UserInfo createLimitedUser() {
UserInfo newUserInfo = mUserManager.createUser( UserInfo newUserInfo = mUserManager.createUser(
getResources().getString(R.string.user_new_user_name), getResources().getString(R.string.user_new_profile_name),
UserInfo.FLAG_RESTRICTED); UserInfo.FLAG_RESTRICTED);
int userId = newUserInfo.id; int userId = newUserInfo.id;
UserHandle user = new UserHandle(userId); UserHandle user = new UserHandle(userId);
@@ -326,7 +326,7 @@ public class UserSettings extends SettingsPreferenceFragment
private UserInfo createTrustedUser() { private UserInfo createTrustedUser() {
UserInfo newUserInfo = mUserManager.createUser( UserInfo newUserInfo = mUserManager.createUser(
getActivity().getResources().getString(R.string.user_new_user_name), 0); getResources().getString(R.string.user_new_user_name), 0);
if (newUserInfo != null) { if (newUserInfo != null) {
assignDefaultPhoto(newUserInfo); assignDefaultPhoto(newUserInfo);
} }
@@ -360,7 +360,11 @@ public class UserSettings extends SettingsPreferenceFragment
private void onUserCreated(int userId) { private void onUserCreated(int userId) {
mAddedUserId = userId; mAddedUserId = userId;
showDialog(DIALOG_SETUP_USER); if (mUserManager.getUserInfo(userId).isRestricted()) {
showDialog(DIALOG_SETUP_PROFILE);
} else {
showDialog(DIALOG_SETUP_USER);
}
} }
@Override @Override
@@ -372,6 +376,8 @@ public class UserSettings extends SettingsPreferenceFragment
@Override @Override
public Dialog onCreateDialog(int dialogId) { public Dialog onCreateDialog(int dialogId) {
Context context = getActivity();
if (context == null) return null;
switch (dialogId) { switch (dialogId) {
case DIALOG_CONFIRM_REMOVE: { case DIALOG_CONFIRM_REMOVE: {
Dialog dlg = new AlertDialog.Builder(getActivity()) Dialog dlg = new AlertDialog.Builder(getActivity())
@@ -392,12 +398,11 @@ public class UserSettings extends SettingsPreferenceFragment
return dlg; return dlg;
} }
case DIALOG_USER_CANNOT_MANAGE: case DIALOG_USER_CANNOT_MANAGE:
return new AlertDialog.Builder(getActivity()) 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_TRUSTED: case DIALOG_ADD_USER: {
case DIALOG_ADD_USER_LIMITED: {
final SharedPreferences preferences = getActivity().getPreferences( final SharedPreferences preferences = getActivity().getPreferences(
Context.MODE_PRIVATE); Context.MODE_PRIVATE);
final boolean longMessageDisplayed = preferences.getBoolean( final boolean longMessageDisplayed = preferences.getBoolean(
@@ -405,37 +410,75 @@ public class UserSettings extends SettingsPreferenceFragment
final int messageResId = longMessageDisplayed final int messageResId = longMessageDisplayed
? R.string.user_add_user_message_short ? R.string.user_add_user_message_short
: R.string.user_add_user_message_long; : R.string.user_add_user_message_long;
final int userType = dialogId == DIALOG_ADD_USER_TRUSTED final int userType = dialogId == DIALOG_ADD_USER
? USER_TYPE_TRUSTED : USER_TYPE_LIMITED; ? USER_TYPE_USER : USER_TYPE_RESTRICTED_PROFILE;
Dialog dlg = new AlertDialog.Builder(getActivity()) 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(KEY_ADD_USER_LONG_MESSAGE_DISPLAYED, preferences.edit().putBoolean(
true).commit(); KEY_ADD_USER_LONG_MESSAGE_DISPLAYED, true).apply();
}
} }
} })
}) .setNegativeButton(android.R.string.cancel, null)
.setNegativeButton(android.R.string.cancel, null) .create();
.create();
return dlg; return dlg;
} }
case DIALOG_SETUP_USER: { case DIALOG_SETUP_USER: {
Dialog dlg = new AlertDialog.Builder(getActivity()) 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;
}
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();
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>();
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>();
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);
data.add(addProfileItem);
Dialog dlg = new AlertDialog.Builder(context)
.setTitle(R.string.user_add_user_type_title)
.setAdapter(new SimpleAdapter(context, data, R.layout.two_line_list_item,
new String[] {KEY_TITLE, KEY_SUMMARY},
new int[] {R.id.title, R.id.summary}),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
onAddUserClicked(which == 0
? USER_TYPE_USER
: USER_TYPE_RESTRICTED_PROFILE);
}
})
.create();
return dlg; return dlg;
} }
default: default:
@@ -476,14 +519,14 @@ public class UserSettings extends SettingsPreferenceFragment
public void run() { public void run() {
UserInfo user = null; UserInfo user = null;
// Could take a few seconds // Could take a few seconds
if (userType == USER_TYPE_TRUSTED) { if (userType == USER_TYPE_USER) {
user = createTrustedUser(); user = createTrustedUser();
} else { } else {
user = createLimitedUser(); user = createLimitedUser();
} }
synchronized (mUserLock) { synchronized (mUserLock) {
mAddingUser = false; mAddingUser = false;
if (userType == USER_TYPE_TRUSTED) { if (userType == USER_TYPE_USER) {
mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST); mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST);
mHandler.sendMessage(mHandler.obtainMessage( mHandler.sendMessage(mHandler.obtainMessage(
MESSAGE_SETUP_USER, user.id, user.serialNumber)); MESSAGE_SETUP_USER, user.id, user.serialNumber));
@@ -509,12 +552,9 @@ public class UserSettings extends SettingsPreferenceFragment
if (getActivity() == null) return; if (getActivity() == null) return;
List<UserInfo> users = mUserManager.getUsers(true); List<UserInfo> users = mUserManager.getUsers(true);
mTrustedUserListCategory.removeAll(); mUserListCategory.removeAll();
mTrustedUserListCategory.setOrderingAsAdded(false); mUserListCategory.setOrderingAsAdded(false);
mLimitedUserListCategory.removeAll(); mUserListCategory.addPreference(mMePreference);
mLimitedUserListCategory.setOrderingAsAdded(false);
mTrustedUserListCategory.addPreference(mMePreference);
final ArrayList<Integer> missingIcons = new ArrayList<Integer>(); final ArrayList<Integer> missingIcons = new ArrayList<Integer>();
for (UserInfo user : users) { for (UserInfo user : users) {
@@ -527,18 +567,18 @@ public class UserSettings extends SettingsPreferenceFragment
mIsOwner ? this : null); mIsOwner ? this : null);
pref.setOnPreferenceClickListener(this); pref.setOnPreferenceClickListener(this);
pref.setKey("id=" + user.id); pref.setKey("id=" + user.id);
if (user.isRestricted()) { mUserListCategory.addPreference(pref);
mLimitedUserListCategory.addPreference(pref);
} else {
mTrustedUserListCategory.addPreference(pref);
}
if (user.id == UserHandle.USER_OWNER) { if (user.id == UserHandle.USER_OWNER) {
pref.setSummary(R.string.user_owner); pref.setSummary(R.string.user_owner);
} }
pref.setTitle(user.name); pref.setTitle(user.name);
if (!isInitialized(user)) { }
pref.setSummary(R.string.user_summary_not_set_up); if (!isInitialized(user)) {
} pref.setSummary(user.isRestricted()
? R.string.user_summary_restricted_not_set_up
: R.string.user_summary_not_set_up);
} else if (user.isRestricted()) {
pref.setSummary(R.string.user_summary_restricted_profile);
} }
if (user.iconPath != null) { if (user.iconPath != null) {
if (mUserIcons.get(user.id) == null) { if (mUserIcons.get(user.id) == null) {
@@ -556,7 +596,7 @@ public class UserSettings extends SettingsPreferenceFragment
pref.setEnabled(false); pref.setEnabled(false);
pref.setTitle(R.string.user_new_user_name); pref.setTitle(R.string.user_new_user_name);
pref.setIcon(encircle(R.drawable.avatar_default_1)); pref.setIcon(encircle(R.drawable.avatar_default_1));
mTrustedUserListCategory.addPreference(pref); mUserListCategory.addPreference(pref);
} }
getActivity().invalidateOptionsMenu(); getActivity().invalidateOptionsMenu();
@@ -565,14 +605,7 @@ public class UserSettings extends SettingsPreferenceFragment
loadIconsAsync(missingIcons); loadIconsAsync(missingIcons);
} }
boolean moreUsers = mUserManager.getMaxSupportedUsers() > users.size(); boolean moreUsers = mUserManager.getMaxSupportedUsers() > users.size();
mAddRestrictedUser.setEnabled(moreUsers); mAddUser.setEnabled(moreUsers);
mAddTrustedUser.setEnabled(moreUsers);
// Remove the limited users category if there aren't other limited users.
if (!mIsOwner) {
if (mLimitedUserListCategory.getPreferenceCount() == 0) {
removePreference(KEY_LIMITED_USER_LIST);
}
}
} }
private void loadIconsAsync(List<Integer> missingIcons) { private void loadIconsAsync(List<Integer> missingIcons) {
@@ -662,10 +695,8 @@ public class UserSettings extends SettingsPreferenceFragment
onManageUserClicked(user.id, false); onManageUserClicked(user.id, false);
} }
} }
} else if (pref == mAddTrustedUser) { } else if (pref == mAddUser) {
onAddUserClicked(USER_TYPE_TRUSTED); showDialog(DIALOG_CHOOSE_USER_TYPE);
} else if (pref == mAddRestrictedUser) {
onAddUserClicked(USER_TYPE_LIMITED);
} }
return false; return false;
} }