1 /** 2 * Copyright (c) 2013, Google Inc. 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 package com.android.mail.ui; 17 18 import android.content.Context; 19 import android.graphics.Typeface; 20 import android.text.TextUtils; 21 import android.util.AttributeSet; 22 import android.view.View; 23 import android.widget.ImageView; 24 import android.widget.LinearLayout; 25 import android.widget.TextView; 26 27 import com.android.bitmap.BitmapCache; 28 import com.android.mail.R; 29 import com.android.mail.bitmap.AccountAvatarDrawable; 30 import com.android.mail.bitmap.ContactResolver; 31 import com.android.mail.providers.Account; 32 33 /** 34 * The view for each account in the folder list/drawer. 35 */ 36 public class AccountItemView extends LinearLayout { 37 private TextView mAccountDisplayName; 38 private TextView mAccountAddress; 39 private ImageView mAvatar; 40 private ImageView mCheckmark; 41 AccountItemView(Context context)42 public AccountItemView(Context context) { 43 super(context); 44 } 45 AccountItemView(Context context, AttributeSet attrs)46 public AccountItemView(Context context, AttributeSet attrs) { 47 super(context, attrs); 48 } 49 AccountItemView(Context context, AttributeSet attrs, int defStyle)50 public AccountItemView(Context context, AttributeSet attrs, int defStyle) { 51 super(context, attrs, defStyle); 52 } 53 54 @Override onFinishInflate()55 protected void onFinishInflate() { 56 super.onFinishInflate(); 57 mAccountDisplayName = (TextView)findViewById(R.id.account_display_name); 58 mAccountAddress = (TextView)findViewById(R.id.account_address); 59 mAvatar = (ImageView)findViewById(R.id.avatar); 60 mCheckmark = (ImageView)findViewById(R.id.checkmark); 61 } 62 63 /** 64 * Sets the account name and draws the unread count. Depending on the account state (current or 65 * unused), the colors and drawables will change through the call to setSelected for each 66 * necessary element. 67 * 68 * @param account account whose name will be displayed 69 * @param isCurrentAccount true if the account is the one in use, false otherwise 70 */ bind(final Context context, final Account account, final boolean isCurrentAccount, final BitmapCache imagesCache, final ContactResolver contactResolver)71 public void bind(final Context context, final Account account, final boolean isCurrentAccount, 72 final BitmapCache imagesCache, final ContactResolver contactResolver) { 73 if (!TextUtils.isEmpty(account.getSenderName())) { 74 mAccountDisplayName.setText(account.getSenderName()); 75 mAccountAddress.setText(account.getEmailAddress()); 76 mAccountAddress.setVisibility(View.VISIBLE); 77 } else if (!TextUtils.isEmpty(account.getDisplayName()) && 78 !TextUtils.equals(account.getDisplayName(), account.getEmailAddress())) { 79 mAccountDisplayName.setText(account.getDisplayName()); 80 mAccountAddress.setText(account.getEmailAddress()); 81 mAccountAddress.setVisibility(View.VISIBLE); 82 } else { 83 mAccountDisplayName.setText(account.getEmailAddress()); 84 mAccountAddress.setVisibility(View.GONE); 85 } 86 if (isCurrentAccount) { 87 mCheckmark.setVisibility(View.VISIBLE); 88 mAccountDisplayName.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); 89 final int blackColor = getResources().getColor(R.color.text_color_black); 90 mAccountDisplayName.setTextColor(blackColor); 91 mAccountAddress.setTextColor(blackColor); 92 } else { 93 mCheckmark.setVisibility(View.GONE); 94 mAccountDisplayName.setTypeface(Typeface.DEFAULT); 95 final int greyColor = getResources().getColor(R.color.text_color_grey); 96 mAccountDisplayName.setTextColor(greyColor); 97 mAccountAddress.setTextColor(greyColor); 98 } 99 100 ImageView v = (ImageView) mAvatar.findViewById(R.id.avatar); 101 AccountAvatarDrawable drawable = new AccountAvatarDrawable( 102 context.getResources(), imagesCache, contactResolver); 103 final int size = context.getResources().getDimensionPixelSize( 104 R.dimen.account_avatar_dimension); 105 drawable.setDecodeDimensions(size, size); 106 drawable.bind(account.getSenderName(), account.getEmailAddress()); 107 v.setImageDrawable(drawable); 108 109 } 110 } 111