diff --git a/res/drawable-hdpi/avatar_default_1.png b/res/drawable-hdpi/avatar_default_1.png
deleted file mode 100644
index 39ffd73d71a..00000000000
Binary files a/res/drawable-hdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_2.png b/res/drawable-hdpi/avatar_default_2.png
deleted file mode 100644
index 79203c50af8..00000000000
Binary files a/res/drawable-hdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_3.png b/res/drawable-hdpi/avatar_default_3.png
deleted file mode 100644
index 4d179b30911..00000000000
Binary files a/res/drawable-hdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_4.png b/res/drawable-hdpi/avatar_default_4.png
deleted file mode 100644
index 1a0332f05ec..00000000000
Binary files a/res/drawable-hdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_5.png b/res/drawable-hdpi/avatar_default_5.png
deleted file mode 100644
index 2487e66d9e0..00000000000
Binary files a/res/drawable-hdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_6.png b/res/drawable-hdpi/avatar_default_6.png
deleted file mode 100644
index f57e1ebbcce..00000000000
Binary files a/res/drawable-hdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_7.png b/res/drawable-hdpi/avatar_default_7.png
deleted file mode 100644
index dc4b2ce5a74..00000000000
Binary files a/res/drawable-hdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-hdpi/avatar_default_8.png b/res/drawable-hdpi/avatar_default_8.png
deleted file mode 100644
index 64e7936ddc0..00000000000
Binary files a/res/drawable-hdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_person_white.png b/res/drawable-hdpi/ic_person_white.png
new file mode 100644
index 00000000000..009524aa65f
Binary files /dev/null and b/res/drawable-hdpi/ic_person_white.png differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_1.png b/res/drawable-ldrtl-hdpi/avatar_default_1.png
deleted file mode 100644
index 4ebe7fe7303..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_2.png b/res/drawable-ldrtl-hdpi/avatar_default_2.png
deleted file mode 100644
index 524e5566aad..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_3.png b/res/drawable-ldrtl-hdpi/avatar_default_3.png
deleted file mode 100644
index ea0d69dd75e..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_4.png b/res/drawable-ldrtl-hdpi/avatar_default_4.png
deleted file mode 100644
index 7387835e8ff..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_5.png b/res/drawable-ldrtl-hdpi/avatar_default_5.png
deleted file mode 100644
index 0bb455caf95..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_6.png b/res/drawable-ldrtl-hdpi/avatar_default_6.png
deleted file mode 100644
index fa4270468fa..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_7.png b/res/drawable-ldrtl-hdpi/avatar_default_7.png
deleted file mode 100644
index 79c0fb7a2c6..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-ldrtl-hdpi/avatar_default_8.png b/res/drawable-ldrtl-hdpi/avatar_default_8.png
deleted file mode 100644
index a254b84fd0d..00000000000
Binary files a/res/drawable-ldrtl-hdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_1.png b/res/drawable-ldrtl-mdpi/avatar_default_1.png
deleted file mode 100644
index 2b2c00c20c0..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_2.png b/res/drawable-ldrtl-mdpi/avatar_default_2.png
deleted file mode 100644
index fa05e117e35..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_3.png b/res/drawable-ldrtl-mdpi/avatar_default_3.png
deleted file mode 100644
index 91c7d5a31a6..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_4.png b/res/drawable-ldrtl-mdpi/avatar_default_4.png
deleted file mode 100644
index 4638ac2857a..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_5.png b/res/drawable-ldrtl-mdpi/avatar_default_5.png
deleted file mode 100644
index 6d84a150ddc..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_6.png b/res/drawable-ldrtl-mdpi/avatar_default_6.png
deleted file mode 100644
index c62ea5b99b8..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_7.png b/res/drawable-ldrtl-mdpi/avatar_default_7.png
deleted file mode 100644
index fe0cbfeaff8..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-ldrtl-mdpi/avatar_default_8.png b/res/drawable-ldrtl-mdpi/avatar_default_8.png
deleted file mode 100644
index 424ba3d03a3..00000000000
Binary files a/res/drawable-ldrtl-mdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_1.png b/res/drawable-ldrtl-xhdpi/avatar_default_1.png
deleted file mode 100644
index 1fdbd46dd9e..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_2.png b/res/drawable-ldrtl-xhdpi/avatar_default_2.png
deleted file mode 100644
index 9d3d693a91e..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_3.png b/res/drawable-ldrtl-xhdpi/avatar_default_3.png
deleted file mode 100644
index 3778914339b..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_4.png b/res/drawable-ldrtl-xhdpi/avatar_default_4.png
deleted file mode 100644
index a25b4f86553..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_5.png b/res/drawable-ldrtl-xhdpi/avatar_default_5.png
deleted file mode 100644
index 2840f22ca22..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_6.png b/res/drawable-ldrtl-xhdpi/avatar_default_6.png
deleted file mode 100644
index d4381703690..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_7.png b/res/drawable-ldrtl-xhdpi/avatar_default_7.png
deleted file mode 100644
index b155d9e3a13..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-ldrtl-xhdpi/avatar_default_8.png b/res/drawable-ldrtl-xhdpi/avatar_default_8.png
deleted file mode 100644
index a17e3a451d6..00000000000
Binary files a/res/drawable-ldrtl-xhdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_1.png b/res/drawable-mdpi/avatar_default_1.png
deleted file mode 100644
index 0d8e3a21a2d..00000000000
Binary files a/res/drawable-mdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_2.png b/res/drawable-mdpi/avatar_default_2.png
deleted file mode 100644
index 0cc4c3dbac4..00000000000
Binary files a/res/drawable-mdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_3.png b/res/drawable-mdpi/avatar_default_3.png
deleted file mode 100644
index c43ad6f53af..00000000000
Binary files a/res/drawable-mdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_4.png b/res/drawable-mdpi/avatar_default_4.png
deleted file mode 100644
index 6906489e95c..00000000000
Binary files a/res/drawable-mdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_5.png b/res/drawable-mdpi/avatar_default_5.png
deleted file mode 100644
index 857f277d26f..00000000000
Binary files a/res/drawable-mdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_6.png b/res/drawable-mdpi/avatar_default_6.png
deleted file mode 100644
index 9d0f968e726..00000000000
Binary files a/res/drawable-mdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_7.png b/res/drawable-mdpi/avatar_default_7.png
deleted file mode 100644
index 7db88647d2a..00000000000
Binary files a/res/drawable-mdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-mdpi/avatar_default_8.png b/res/drawable-mdpi/avatar_default_8.png
deleted file mode 100644
index 98d67d997a4..00000000000
Binary files a/res/drawable-mdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_person_white.png b/res/drawable-mdpi/ic_person_white.png
new file mode 100644
index 00000000000..563f1d10025
Binary files /dev/null and b/res/drawable-mdpi/ic_person_white.png differ
diff --git a/res/drawable-xhdpi/avatar_default_1.png b/res/drawable-xhdpi/avatar_default_1.png
deleted file mode 100644
index 6caa06a5d1e..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_1.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_2.png b/res/drawable-xhdpi/avatar_default_2.png
deleted file mode 100644
index faf3b15f7a7..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_2.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_3.png b/res/drawable-xhdpi/avatar_default_3.png
deleted file mode 100644
index 63a80ff5697..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_3.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_4.png b/res/drawable-xhdpi/avatar_default_4.png
deleted file mode 100644
index d743dc62172..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_4.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_5.png b/res/drawable-xhdpi/avatar_default_5.png
deleted file mode 100644
index b7b822b92f8..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_5.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_6.png b/res/drawable-xhdpi/avatar_default_6.png
deleted file mode 100644
index f5b5e84851c..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_6.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_7.png b/res/drawable-xhdpi/avatar_default_7.png
deleted file mode 100644
index 4271c0d70f3..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_7.png and /dev/null differ
diff --git a/res/drawable-xhdpi/avatar_default_8.png b/res/drawable-xhdpi/avatar_default_8.png
deleted file mode 100644
index 27261a597be..00000000000
Binary files a/res/drawable-xhdpi/avatar_default_8.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_person_white.png b/res/drawable-xhdpi/ic_person_white.png
new file mode 100644
index 00000000000..0200ece7255
Binary files /dev/null and b/res/drawable-xhdpi/ic_person_white.png differ
diff --git a/res/drawable-xxhdpi/ic_person_white.png b/res/drawable-xxhdpi/ic_person_white.png
new file mode 100644
index 00000000000..6a6f0338889
Binary files /dev/null and b/res/drawable-xxhdpi/ic_person_white.png differ
diff --git a/res/drawable-xxxhdpi/ic_person_white.png b/res/drawable-xxxhdpi/ic_person_white.png
new file mode 100644
index 00000000000..9092553e7a4
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_person_white.png differ
diff --git a/res/drawable/ic_avatar_default_1.xml b/res/drawable/ic_avatar_default_1.xml
new file mode 100644
index 00000000000..edd919ac1ed
--- /dev/null
+++ b/res/drawable/ic_avatar_default_1.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_2.xml b/res/drawable/ic_avatar_default_2.xml
new file mode 100644
index 00000000000..77918a0a77d
--- /dev/null
+++ b/res/drawable/ic_avatar_default_2.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_3.xml b/res/drawable/ic_avatar_default_3.xml
new file mode 100644
index 00000000000..49fd6c4f3ed
--- /dev/null
+++ b/res/drawable/ic_avatar_default_3.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_4.xml b/res/drawable/ic_avatar_default_4.xml
new file mode 100644
index 00000000000..6992f902fea
--- /dev/null
+++ b/res/drawable/ic_avatar_default_4.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_5.xml b/res/drawable/ic_avatar_default_5.xml
new file mode 100644
index 00000000000..2aa0db22655
--- /dev/null
+++ b/res/drawable/ic_avatar_default_5.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_6.xml b/res/drawable/ic_avatar_default_6.xml
new file mode 100644
index 00000000000..7f9bb327aa2
--- /dev/null
+++ b/res/drawable/ic_avatar_default_6.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_7.xml b/res/drawable/ic_avatar_default_7.xml
new file mode 100644
index 00000000000..1c1c5f34dc3
--- /dev/null
+++ b/res/drawable/ic_avatar_default_7.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_default_8.xml b/res/drawable/ic_avatar_default_8.xml
new file mode 100644
index 00000000000..478454e7802
--- /dev/null
+++ b/res/drawable/ic_avatar_default_8.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_avatar_guest.xml b/res/drawable/ic_avatar_guest.xml
new file mode 100644
index 00000000000..f81fe898ce5
--- /dev/null
+++ b/res/drawable/ic_avatar_guest.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/res/values/colors.xml b/res/values/colors.xml
index b523801d2c9..ee9c4c42ea3 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -67,4 +67,17 @@
@android:color/white
@color/default_preference_background_color
@color/default_preference_background_color
+
+
+ #ffe91e63
+ #ff3f51b5
+ @*android:color/material_blue_500
+ @*android:color/material_teal_500
+ @*android:color/material_green_500
+ #ff8bc34a
+ @*android:color/material_orange_500
+ @*android:color/material_deep_orange_500
+
+ @*android:color/material_grey_500
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ec4e13c3d9b..d9387725c07 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5171,6 +5171,12 @@
Delete
Guest
+
+ Exit guest
+
+ Exiting guest session?
+
+ Ending the guest session will remove local data.
Enable phone calls?
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 2d583274ad2..e8c99ad4ead 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -37,6 +37,7 @@ import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -93,6 +94,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final int DIALOG_USER_CANNOT_MANAGE = 5;
private static final int DIALOG_CHOOSE_USER_TYPE = 6;
private static final int DIALOG_NEED_LOCKSCREEN = 7;
+ private static final int DIALOG_CONFIRM_EXIT_GUEST = 8;
private static final int MESSAGE_UPDATE_LIST = 1;
private static final int MESSAGE_SETUP_USER = 2;
@@ -107,16 +109,18 @@ public class UserSettings extends SettingsPreferenceFragment
"key_add_user_long_message_displayed";
static final int[] USER_DRAWABLES = {
- R.drawable.avatar_default_1,
- R.drawable.avatar_default_2,
- R.drawable.avatar_default_3,
- R.drawable.avatar_default_4,
- R.drawable.avatar_default_5,
- R.drawable.avatar_default_6,
- R.drawable.avatar_default_7,
- R.drawable.avatar_default_8
+ R.drawable.ic_avatar_default_1,
+ R.drawable.ic_avatar_default_2,
+ R.drawable.ic_avatar_default_3,
+ R.drawable.ic_avatar_default_4,
+ R.drawable.ic_avatar_default_5,
+ R.drawable.ic_avatar_default_6,
+ R.drawable.ic_avatar_default_7,
+ R.drawable.ic_avatar_default_8
};
+ private static final int GUEST_DRAWABLE_ID = R.drawable.ic_avatar_guest;
+
private static final String KEY_TITLE = "title";
private static final String KEY_SUMMARY = "summary";
@@ -137,6 +141,11 @@ public class UserSettings extends SettingsPreferenceFragment
private boolean mIsOwner = UserHandle.myUserId() == UserHandle.USER_OWNER;
private boolean mIsGuest;
+ // A place to cache the generated guest avatar
+ private Drawable mGuestDrawable;
+ // A place to cache the generated default avatar
+ private Drawable mDefaultAvatarDrawable;
+
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -195,8 +204,9 @@ public class UserSettings extends SettingsPreferenceFragment
addPreferencesFromResource(R.xml.user_settings);
mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST);
- mMePreference = new UserPreference(context, null, myUserId,
- mUserManager.isLinkedUser() ? null : this, null);
+ mMePreference = new UserPreference(context, null /* attrs */, myUserId,
+ mUserManager.isLinkedUser() || mIsGuest ? null : this /* settings icon handler */,
+ null /* delete icon handler */);
mMePreference.setKey(KEY_USER_ME);
mMePreference.setOnPreferenceClickListener(this);
if (mIsOwner) {
@@ -275,8 +285,18 @@ public class UserSettings extends SettingsPreferenceFragment
}
}
+ /**
+ * Loads profile information for the current user.
+ */
private void loadProfile() {
mProfileExists = false;
+ if (mIsGuest) {
+ // No need to load profile information
+ mMePreference.setIcon(getEncircledGuestDrawable());
+ mMePreference.setTitle(R.string.user_exit_guest_title);
+ return;
+ }
+
new AsyncTask() {
@Override
protected void onPostExecute(String result) {
@@ -370,9 +390,8 @@ public class UserSettings extends SettingsPreferenceFragment
mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, user);
Secure.putIntForUser(getContentResolver(),
Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF, userId);
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
- UserSettings.USER_DRAWABLES[
- userId % UserSettings.USER_DRAWABLES.length]);
+ Bitmap bitmap = createBitmapFromDrawable(
+ USER_DRAWABLES[userId % UserSettings.USER_DRAWABLES.length]);
mUserManager.setUserIcon(userId, bitmap);
// Add shared accounts
AccountManager am = AccountManager.get(getActivity());
@@ -385,6 +404,15 @@ public class UserSettings extends SettingsPreferenceFragment
return newUserInfo;
}
+ private Bitmap createBitmapFromDrawable(int resId) {
+ Drawable icon = getResources().getDrawable(resId);
+ icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
+ Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(),
+ Bitmap.Config.ARGB_8888);
+ icon.draw(new Canvas(bitmap));
+ return bitmap;
+ }
+
private UserInfo createTrustedUser() {
UserInfo newUserInfo = mUserManager.createUser(
getResources().getString(R.string.user_new_user_name), 0);
@@ -567,6 +595,21 @@ public class UserSettings extends SettingsPreferenceFragment
.create();
return dlg;
}
+ case DIALOG_CONFIRM_EXIT_GUEST: {
+ Dialog dlg = new AlertDialog.Builder(context)
+ .setTitle(R.string.user_exit_guest_confirm_title)
+ .setMessage(R.string.user_exit_guest_confirm_message)
+ .setPositiveButton(android.R.string.yes,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ exitGuest();
+ }
+ })
+ .setNegativeButton(android.R.string.no, null)
+ .create();
+ return dlg;
+ }
default:
return null;
}
@@ -634,6 +677,17 @@ public class UserSettings extends SettingsPreferenceFragment
}
}
+ /**
+ * Erase the current user (guest) and switch to another user.
+ */
+ private void exitGuest() {
+ // Just to be safe
+ if (!mIsGuest) {
+ return;
+ }
+ removeThisUser();
+ }
+
private void updateUserList() {
if (getActivity() == null) return;
List users = mUserManager.getUsers(true);
@@ -695,7 +749,7 @@ public class UserSettings extends SettingsPreferenceFragment
if (user.iconPath != null) {
if (mUserIcons.get(user.id) == null) {
missingIcons.add(user.id);
- pref.setIcon(encircle(R.drawable.avatar_default_1));
+ pref.setIcon(getEncircledDefaultAvatar());
} else {
setPhotoId(pref, user);
}
@@ -707,7 +761,7 @@ public class UserSettings extends SettingsPreferenceFragment
null, null);
pref.setEnabled(false);
pref.setTitle(R.string.user_new_user_name);
- pref.setIcon(encircle(R.drawable.avatar_default_1));
+ pref.setIcon(getEncircledDefaultAvatar());
mUserListCategory.addPreference(pref);
}
@@ -716,7 +770,7 @@ public class UserSettings extends SettingsPreferenceFragment
Preference pref = new UserPreference(getActivity(), null,
UserPreference.USERID_GUEST_DEFAULTS, mIsOwner ? this : null, null);
pref.setTitle(R.string.user_guest);
- pref.setIcon(encircle(R.drawable.ic_settings_accounts));
+ pref.setIcon(getEncircledGuestDrawable());
pref.setOnPreferenceClickListener(this);
mUserListCategory.addPreference(pref);
}
@@ -765,11 +819,26 @@ public class UserSettings extends SettingsPreferenceFragment
}
private void assignDefaultPhoto(UserInfo user) {
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
- USER_DRAWABLES[user.id % USER_DRAWABLES.length]);
+ Bitmap bitmap = createBitmapFromDrawable(
+ USER_DRAWABLES[user.id % UserSettings.USER_DRAWABLES.length]);
mUserManager.setUserIcon(user.id, bitmap);
}
+ private Drawable getEncircledGuestDrawable() {
+ if (mGuestDrawable == null) {
+ mGuestDrawable = encircle(createBitmapFromDrawable(GUEST_DRAWABLE_ID));
+ }
+ return mGuestDrawable;
+ }
+
+ private Drawable getEncircledDefaultAvatar() {
+ if (mDefaultAvatarDrawable == null) {
+ mDefaultAvatarDrawable =
+ encircle(createBitmapFromDrawable(R.drawable.ic_avatar_default_1));
+ }
+ return mDefaultAvatarDrawable;
+ }
+
private void setPhotoId(Preference pref, UserInfo user) {
Bitmap bitmap = mUserIcons.get(user.id);
if (bitmap != null) {
@@ -786,6 +855,10 @@ public class UserSettings extends SettingsPreferenceFragment
@Override
public boolean onPreferenceClick(Preference pref) {
if (pref == mMePreference) {
+ if (mIsGuest) {
+ showDialog(DIALOG_CONFIRM_EXIT_GUEST);
+ return true;
+ }
Intent editProfile;
if (!mProfileExists) {
editProfile = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);