Merge "Fix user icon visibility bugs" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-07-10 04:09:13 +00:00
committed by Android (Google) Code Review

View File

@@ -21,7 +21,7 @@ import android.content.res.Resources;
import android.database.DataSetObserver; import android.database.DataSetObserver;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.LayerDrawable;
import android.os.UserManager; import android.os.UserHandle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -76,7 +76,6 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
private final KeyguardVisibilityHelper mKeyguardVisibilityHelper; private final KeyguardVisibilityHelper mKeyguardVisibilityHelper;
private final KeyguardUserDetailAdapter mUserDetailAdapter; private final KeyguardUserDetailAdapter mUserDetailAdapter;
private NotificationPanelViewController mNotificationPanelViewController; private NotificationPanelViewController mNotificationPanelViewController;
private UserManager mUserManager;
UserSwitcherController.UserRecord mCurrentUser; UserSwitcherController.UserRecord mCurrentUser;
// State info for the user switch and keyguard // State info for the user switch and keyguard
@@ -115,7 +114,6 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
UserAvatarView view, UserAvatarView view,
Context context, Context context,
@Main Resources resources, @Main Resources resources,
UserManager userManager,
ScreenLifecycle screenLifecycle, ScreenLifecycle screenLifecycle,
UserSwitcherController userSwitcherController, UserSwitcherController userSwitcherController,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
@@ -129,7 +127,6 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
if (DEBUG) Log.d(TAG, "New KeyguardQsUserSwitchController"); if (DEBUG) Log.d(TAG, "New KeyguardQsUserSwitchController");
mContext = context; mContext = context;
mResources = resources; mResources = resources;
mUserManager = userManager;
mScreenLifecycle = screenLifecycle; mScreenLifecycle = screenLifecycle;
mUserSwitcherController = userSwitcherController; mUserSwitcherController = userSwitcherController;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
@@ -227,47 +224,39 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie
return; return;
} }
if (mCurrentUser == null) {
mView.setVisibility(View.GONE);
return;
}
mView.setVisibility(View.VISIBLE);
String currentUserName = mCurrentUser.info.name;
String contentDescription = null; String contentDescription = null;
if (mCurrentUser != null && mCurrentUser.info != null && !TextUtils.isEmpty(
if (!TextUtils.isEmpty(currentUserName)) { mCurrentUser.info.name)) {
// If we know the current user's name, have TalkBack to announce "Signed in as [user
// name]" when the icon is selected
contentDescription = mContext.getString(R.string.accessibility_quick_settings_user,
mCurrentUser.info.name);
} else {
// As a fallback, have TalkBack announce "Switch user"
contentDescription = mContext.getString( contentDescription = mContext.getString(
R.string.accessibility_quick_settings_user, R.string.accessibility_multi_user_switch_switcher);
currentUserName);
} }
if (!TextUtils.equals(mView.getContentDescription(), contentDescription)) { if (!TextUtils.equals(mView.getContentDescription(), contentDescription)) {
mView.setContentDescription(contentDescription); mView.setContentDescription(contentDescription);
} }
mView.setDrawableWithBadge(getCurrentUserIcon().mutate(), mCurrentUser.resolveId()); int userId = mCurrentUser != null ? mCurrentUser.resolveId() : UserHandle.USER_NULL;
mView.setDrawableWithBadge(getCurrentUserIcon().mutate(), userId);
} }
Drawable getCurrentUserIcon() { Drawable getCurrentUserIcon() {
Drawable drawable; Drawable drawable;
if (mCurrentUser.picture == null) { if (mCurrentUser == null || mCurrentUser.picture == null) {
if (mCurrentUser.isCurrent && mCurrentUser.isGuest) { if (mCurrentUser != null && mCurrentUser.isGuest) {
drawable = mContext.getDrawable(R.drawable.ic_avatar_guest_user); drawable = mContext.getDrawable(R.drawable.ic_avatar_guest_user);
} else { } else {
drawable = mAdapter.getIconDrawable(mContext, mCurrentUser); drawable = mContext.getDrawable(R.drawable.ic_avatar_user);
}
int iconColorRes;
if (mCurrentUser.isSwitchToEnabled) {
iconColorRes = R.color.kg_user_switcher_avatar_icon_color;
} else {
iconColorRes = R.color.kg_user_switcher_restricted_avatar_icon_color;
} }
int iconColorRes = R.color.kg_user_switcher_avatar_icon_color;
drawable.setTint(mResources.getColor(iconColorRes, mContext.getTheme())); drawable.setTint(mResources.getColor(iconColorRes, mContext.getTheme()));
} else { } else {
int avatarSize = int avatarSize = (int) mResources.getDimension(R.dimen.kg_framed_avatar_size);
(int) mResources.getDimension(R.dimen.kg_framed_avatar_size);
drawable = new CircleFramedDrawable(mCurrentUser.picture, avatarSize); drawable = new CircleFramedDrawable(mCurrentUser.picture, avatarSize);
} }