Update icons and text for guest user
Test: As Guest, open Settings > System > Multiple users Test: As Owner, open Settings > System > Multiple users Bug: 169783558 Change-Id: I42c0b46fd895267b7556f3f308957b6dd17d92c4
This commit is contained in:
@@ -7111,13 +7111,15 @@
|
|||||||
<!-- Title for Guest user [CHAR LIMIT=35] -->
|
<!-- Title for Guest user [CHAR LIMIT=35] -->
|
||||||
<string name="user_guest">Guest</string>
|
<string name="user_guest">Guest</string>
|
||||||
<!-- Label for item to exit guest mode [CHAR LIMIT=35] -->
|
<!-- Label for item to exit guest mode [CHAR LIMIT=35] -->
|
||||||
<string name="user_exit_guest_title">Remove guest</string>
|
<string name="user_clear_guest_menu">Clear guest data</string>
|
||||||
|
<!-- Label for item to exit guest mode [CHAR LIMIT=35] -->
|
||||||
|
<string name="user_exit_guest_menu">End guest session</string>
|
||||||
<!-- Title of dialog to user to confirm exiting guest. [CHAR LIMIT=50] -->
|
<!-- Title of dialog to user to confirm exiting guest. [CHAR LIMIT=50] -->
|
||||||
<string name="user_exit_guest_confirm_title">Remove guest?</string>
|
<string name="user_exit_guest_confirm_title">End guest session?</string>
|
||||||
<!-- Message to user to confirm exiting guest. [CHAR LIMIT=none] -->
|
<!-- Message to user to confirm exiting guest. [CHAR LIMIT=none] -->
|
||||||
<string name="user_exit_guest_confirm_message">All apps and data in this session will be deleted.</string>
|
<string name="user_exit_guest_confirm_message">All apps and data in this session will be deleted.</string>
|
||||||
<!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
|
<!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
|
||||||
<string name="user_exit_guest_dialog_remove">Remove</string>
|
<string name="user_exit_guest_dialog_remove">End session</string>
|
||||||
|
|
||||||
<!-- Title of preference to enable calling[CHAR LIMIT=40] -->
|
<!-- Title of preference to enable calling[CHAR LIMIT=40] -->
|
||||||
<string name="user_enable_calling">Turn on phone calls</string>
|
<string name="user_enable_calling">Turn on phone calls</string>
|
||||||
|
@@ -243,7 +243,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
|
|||||||
mDefaultGuestRestrictions = mUserManager.getDefaultGuestRestrictions();
|
mDefaultGuestRestrictions = mUserManager.getDefaultGuestRestrictions();
|
||||||
mPhonePref.setChecked(
|
mPhonePref.setChecked(
|
||||||
!mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS));
|
!mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS));
|
||||||
mRemoveUserPref.setTitle(R.string.user_exit_guest_title);
|
mRemoveUserPref.setTitle(R.string.user_exit_guest_menu);
|
||||||
} else {
|
} else {
|
||||||
mPhonePref.setChecked(!mUserManager.hasUserRestriction(
|
mPhonePref.setChecked(!mUserManager.hasUserRestriction(
|
||||||
UserManager.DISALLOW_OUTGOING_CALLS, new UserHandle(userId)));
|
UserManager.DISALLOW_OUTGOING_CALLS, new UserHandle(userId)));
|
||||||
|
@@ -31,6 +31,7 @@ import android.content.pm.UserInfo;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@@ -164,6 +165,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
private final Object mUserLock = new Object();
|
private final Object mUserLock = new Object();
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
private static SparseArray<Bitmap> sDarkDefaultUserBitmapCache = new SparseArray<>();
|
private static SparseArray<Bitmap> sDarkDefaultUserBitmapCache = new SparseArray<>();
|
||||||
|
private static Bitmap sRemoveGuestBitmap = null;
|
||||||
|
|
||||||
private MultiUserSwitchBarController mSwitchBarController;
|
private MultiUserSwitchBarController mSwitchBarController;
|
||||||
private EditUserInfoController mEditUserInfoController =
|
private EditUserInfoController mEditUserInfoController =
|
||||||
@@ -177,6 +179,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
// A place to cache the generated default avatar
|
// A place to cache the generated default avatar
|
||||||
private Drawable mDefaultIconDrawable;
|
private Drawable mDefaultIconDrawable;
|
||||||
|
private Drawable mRemoveGuestIconDrawable;
|
||||||
|
|
||||||
// TODO: Replace current Handler solution to something that doesn't leak memory and works
|
// TODO: Replace current Handler solution to something that doesn't leak memory and works
|
||||||
// TODO: during a configuration change
|
// TODO: during a configuration change
|
||||||
@@ -383,8 +386,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
private void loadProfile() {
|
private void loadProfile() {
|
||||||
if (isCurrentUserGuest()) {
|
if (isCurrentUserGuest()) {
|
||||||
// No need to load profile information
|
// No need to load profile information
|
||||||
mMePreference.setIcon(getEncircledDefaultIcon());
|
mMePreference.setIcon(getEncircledRemoveGuestIcon());
|
||||||
mMePreference.setTitle(R.string.user_exit_guest_title);
|
mMePreference.setTitle(R.string.user_clear_guest_menu);
|
||||||
mMePreference.setSelectable(true);
|
mMePreference.setSelectable(true);
|
||||||
// removing a guest will result in switching back to the admin user
|
// removing a guest will result in switching back to the admin user
|
||||||
mMePreference.setEnabled(canSwitchUserNow());
|
mMePreference.setEnabled(canSwitchUserNow());
|
||||||
@@ -899,7 +902,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
} else {
|
} else {
|
||||||
setPhotoId(pref, user);
|
setPhotoId(pref, user);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (!user.isGuest()) {
|
||||||
// Icon not available yet, print a placeholder
|
// Icon not available yet, print a placeholder
|
||||||
pref.setIcon(getEncircledDefaultIcon());
|
pref.setIcon(getEncircledDefaultIcon());
|
||||||
}
|
}
|
||||||
@@ -1044,6 +1047,14 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
return mDefaultIconDrawable;
|
return mDefaultIconDrawable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Drawable getEncircledRemoveGuestIcon() {
|
||||||
|
if (mRemoveGuestIconDrawable == null) {
|
||||||
|
mRemoveGuestIconDrawable = encircle(
|
||||||
|
getRemoveGuestIconAsBitmap(getContext().getResources()));
|
||||||
|
}
|
||||||
|
return mRemoveGuestIconDrawable;
|
||||||
|
}
|
||||||
|
|
||||||
private void setPhotoId(Preference pref, UserInfo user) {
|
private void setPhotoId(Preference pref, UserInfo user) {
|
||||||
Bitmap bitmap = mUserIcons.get(user.id);
|
Bitmap bitmap = mUserIcons.get(user.id);
|
||||||
if (bitmap != null) {
|
if (bitmap != null) {
|
||||||
@@ -1122,6 +1133,23 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a remove guest icon (as a {@link Bitmap})
|
||||||
|
*
|
||||||
|
* @param resources resources object to fetch the remove guest icon.
|
||||||
|
*/
|
||||||
|
private static Bitmap getRemoveGuestIconAsBitmap(Resources resources) {
|
||||||
|
if (sRemoveGuestBitmap == null) {
|
||||||
|
Drawable icon = resources.getDrawable(R.drawable.ic_delete, null).mutate();
|
||||||
|
icon.setColorFilter(
|
||||||
|
resources.getColor(com.android.internal.R.color.user_icon_default_gray, null),
|
||||||
|
PorterDuff.Mode.SRC_IN);
|
||||||
|
icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
|
||||||
|
sRemoveGuestBitmap = UserIcons.convertToBitmap(icon);
|
||||||
|
}
|
||||||
|
return sRemoveGuestBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign the default photo to user with {@paramref userId}
|
* Assign the default photo to user with {@paramref userId}
|
||||||
*
|
*
|
||||||
|
@@ -363,7 +363,7 @@ public class UserDetailsSettingsTest {
|
|||||||
mFragment.initialize(mActivity, mArguments);
|
mFragment.initialize(mActivity, mArguments);
|
||||||
|
|
||||||
verify(mRemoveUserPref).setOnPreferenceClickListener(mFragment);
|
verify(mRemoveUserPref).setOnPreferenceClickListener(mFragment);
|
||||||
verify(mRemoveUserPref).setTitle(R.string.user_exit_guest_title);
|
verify(mRemoveUserPref).setTitle(R.string.user_exit_guest_menu);
|
||||||
verify(mFragment, never()).removePreference(KEY_REMOVE_USER);
|
verify(mFragment, never()).removePreference(KEY_REMOVE_USER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user