1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License 15 */ 16 17 package com.android.car.settings.users; 18 19 import android.annotation.NonNull; 20 import android.app.ActivityManager; 21 import android.content.Context; 22 import android.content.pm.UserInfo; 23 import android.graphics.Bitmap; 24 import android.os.UserManager; 25 import android.widget.ImageView; 26 27 import com.android.car.settings.R; 28 import com.android.car.settings.common.BaseFragment; 29 import com.android.car.settings.common.IconTextLineItem; 30 31 /** 32 * Represents a user in settings page. 33 */ 34 public class UserLineItem extends IconTextLineItem { 35 private final Context mContext; 36 private final UserInfo mUserInfo; 37 private final UserManager mUserManager; 38 private final BaseFragment.FragmentController mFragmentController; 39 UserLineItem( @onNull Context context, UserInfo userInfo, UserManager userManager, BaseFragment.FragmentController fragmentController)40 public UserLineItem( 41 @NonNull Context context, 42 UserInfo userInfo, 43 UserManager userManager, 44 BaseFragment.FragmentController fragmentController) { 45 super(userInfo.name); 46 mContext = context; 47 mUserInfo = userInfo; 48 mUserManager = userManager; 49 mFragmentController = fragmentController; 50 } 51 52 @Override bindViewHolder(IconTextLineItem.ViewHolder viewHolder)53 public void bindViewHolder(IconTextLineItem.ViewHolder viewHolder) { 54 super.bindViewHolder(viewHolder); 55 viewHolder.titleView.setText(isCurrentUser(mUserInfo) 56 ? mContext.getString(R.string.current_user_name, mUserInfo.name) : mUserInfo.name); 57 } 58 59 @Override onClick()60 public void onClick() { 61 mFragmentController.launchFragment(UserDetailsSettingsFragment.getInstance(mUserInfo)); 62 } 63 64 @Override isEnabled()65 public boolean isEnabled() { 66 return true; 67 } 68 69 @Override isExpandable()70 public boolean isExpandable() { 71 return true; 72 } 73 74 @Override getDesc()75 public CharSequence getDesc() { 76 return null; 77 } 78 79 @Override setIcon(ImageView iconView)80 public void setIcon(ImageView iconView) { 81 Bitmap picture = mUserManager.getUserIcon(mUserInfo.id); 82 83 if (picture != null) { 84 int avatarSize = mContext.getResources() 85 .getDimensionPixelSize(R.dimen.stream_button_icon_size); 86 picture = Bitmap.createScaledBitmap( 87 picture, avatarSize, avatarSize, true); 88 iconView.setImageBitmap(picture); 89 } else { 90 iconView.setImageDrawable(mContext.getDrawable(R.drawable.ic_user)); 91 } 92 } 93 isCurrentUser(UserInfo userInfo)94 private boolean isCurrentUser(UserInfo userInfo) { 95 return ActivityManager.getCurrentUser() == userInfo.id; 96 } 97 } 98