blob: af8081b84931821cb75f43d5697a2419135b8224 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.car.dialer.ui.listitem;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
import com.android.car.apps.common.LetterTileDrawable;
import com.android.car.dialer.R;
import com.android.car.dialer.telecom.ContactBitmapWorker;
import com.android.car.dialer.ui.CallHistoryListItemProvider;
import com.android.car.dialer.ui.CallLogListingTask;
import com.android.car.dialer.ui.CircleBitmapDrawable;
import androidx.car.widget.TextListItem;
/**
* List item which is created by {@link CallHistoryListItemProvider} binds a call list item to a
* list view item.
*/
public class CallLogListItem extends TextListItem {
private final CallLogListingTask.CallLogItem mCallLogItem;
private final Context mContext;
public CallLogListItem(Context context, CallLogListingTask.CallLogItem callLog) {
super(context);
mCallLogItem = callLog;
mContext = context;
}
@Override
public void onBind(ViewHolder viewHolder) {
super.onBind(viewHolder);
ContactBitmapWorker.loadBitmap(mContext.getContentResolver(), viewHolder.getPrimaryIcon(),
mCallLogItem.mNumber,
bitmap -> {
Resources r = mContext.getResources();
viewHolder.getPrimaryIcon().setScaleType(ImageView.ScaleType.CENTER);
Drawable avatarDrawable;
if (bitmap != null) {
avatarDrawable = new CircleBitmapDrawable(r, bitmap);
setPrimaryActionIcon(new CircleBitmapDrawable(r, bitmap), true);
} else {
LetterTileDrawable letterTileDrawable = new LetterTileDrawable(r);
letterTileDrawable.setContactDetails(mCallLogItem.mTitle,
mCallLogItem.mNumber);
letterTileDrawable.setIsCircular(true);
avatarDrawable = letterTileDrawable;
}
int iconSize = mContext.getResources().getDimensionPixelSize(
R.dimen.avatar_icon_size);
setPrimaryActionIcon(scaleDrawable(avatarDrawable, iconSize), true);
super.onBind(viewHolder);
});
viewHolder.getContainerLayout().setBackgroundColor(
mContext.getColor(R.color.call_history_list_item_color));
}
private Drawable scaleDrawable(Drawable targetDrawable, int sizeInPixel) {
Bitmap bitmap = null;
if (targetDrawable instanceof CircleBitmapDrawable) {
bitmap = ((CircleBitmapDrawable) targetDrawable).toBitmap(sizeInPixel);
} else if (targetDrawable instanceof LetterTileDrawable){
bitmap = ((LetterTileDrawable) targetDrawable).toBitmap(sizeInPixel);
}
return new BitmapDrawable(mContext.getResources(), bitmap);
}
}