1 /* 2 * Copyright (C) 2018 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.profiles; 18 19 import android.car.drivingstate.CarUxRestrictions; 20 import android.content.Context; 21 import android.graphics.drawable.Drawable; 22 23 import androidx.annotation.VisibleForTesting; 24 import androidx.preference.Preference; 25 26 import com.android.car.settings.R; 27 import com.android.car.settings.common.FragmentController; 28 29 /** Header preference showing the profile's icon, name, and summary on the profile details page. */ 30 public class ProfileDetailsHeaderPreferenceController extends 31 ProfileDetailsBasePreferenceController<Preference> { 32 33 private ProfileHelper mProfileHelper; 34 ProfileDetailsHeaderPreferenceController(Context context, String preferenceKey, FragmentController fragmentController, CarUxRestrictions uxRestrictions)35 public ProfileDetailsHeaderPreferenceController(Context context, String preferenceKey, 36 FragmentController fragmentController, CarUxRestrictions uxRestrictions) { 37 super(context, preferenceKey, fragmentController, uxRestrictions); 38 mProfileHelper = ProfileHelper.getInstance(getContext()); 39 } 40 41 @Override getPreferenceType()42 protected Class<Preference> getPreferenceType() { 43 return Preference.class; 44 } 45 46 @Override updateState(Preference preference)47 protected void updateState(Preference preference) { 48 Drawable icon = new ProfileIconProvider().getRoundedProfileIcon(getUserInfo(), 49 getContext()); 50 preference.setIcon(icon); 51 preference.setTitle(ProfileUtils.getProfileDisplayName(getContext(), getUserInfo())); 52 preference.setSummary(getSummary()); 53 } 54 55 @VisibleForTesting setProfileHelper(ProfileHelper profileHelper)56 void setProfileHelper(ProfileHelper profileHelper) { 57 mProfileHelper = profileHelper; 58 } 59 getSummary()60 private CharSequence getSummary() { 61 if (!getUserInfo().isInitialized()) { 62 return getContext().getString(R.string.user_summary_not_set_up); 63 } 64 if (getUserInfo().isAdmin()) { 65 return mProfileHelper.isCurrentProcessUser(getUserInfo()) 66 ? getContext().getString(R.string.signed_in_admin_user) 67 : getContext().getString(R.string.user_admin); 68 } 69 return null; 70 } 71 } 72