summaryrefslogtreecommitdiffstats
path: root/src/com/android/car/dialer/ui/activecall/ConferenceProfileViewHolder.java
blob: 7d020aa6ae7b45c36b799dbd4d82960785fe0c4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
 * Copyright (C) 2020 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.activecall;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.recyclerview.widget.RecyclerView;

import com.android.car.apps.common.LetterTileDrawable;
import com.android.car.dialer.R;
import com.android.car.dialer.ui.view.ContactAvatarOutputlineProvider;
import com.android.car.telephony.common.CallDetail;
import com.android.car.telephony.common.TelecomUtils;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;

/**
 * View holder for a user profile of a conference
 */
public class ConferenceProfileViewHolder extends RecyclerView.ViewHolder {

    private ImageView mAvatar;
    private TextView mTitle;
    private TextView mNumber;
    private Context mContext;

    ConferenceProfileViewHolder(View v) {
        super(v);

        mAvatar = v.findViewById(R.id.user_profile_avatar);
        mAvatar.setOutlineProvider(ContactAvatarOutputlineProvider.get());
        mTitle = v.findViewById(R.id.user_profile_title);
        mNumber = v.findViewById(R.id.user_profile_phone_number);
        mContext = v.getContext();
    }

    /**
     * Binds call details to the profile views
     */
    public void bind(CallDetail callDetail) {
        String number = callDetail.getNumber();
        TelecomUtils.getPhoneNumberInfo(mContext, number)
                .thenAcceptAsync((info) -> {
                    if (mContext == null) {
                        return;
                    }

                    mAvatar.setImageDrawable(TelecomUtils.createLetterTile(mContext, null, null));
                    mTitle.setText(info.getDisplayName());

                    String phoneNumberLabel = info.getTypeLabel();
                    if (!phoneNumberLabel.isEmpty()) {
                        phoneNumberLabel += " ";
                    }
                    phoneNumberLabel += TelecomUtils.getFormattedNumber(mContext, number);
                    if (!TextUtils.isEmpty(phoneNumberLabel)
                            && !phoneNumberLabel.equals(info.getDisplayName())) {
                        mNumber.setText(phoneNumberLabel);
                    } else {
                        mNumber.setText(null);
                    }

                    LetterTileDrawable letterTile = TelecomUtils.createLetterTile(
                            mContext, info.getInitials(), info.getDisplayName());

                    Glide.with(mContext)
                            .load(info.getAvatarUri())
                            .apply(new RequestOptions().centerCrop().error(letterTile))
                            .into(new SimpleTarget<Drawable>() {
                                @Override
                                public void onResourceReady(Drawable resource,
                                        Transition<? super Drawable> glideAnimation) {
                                    mAvatar.setImageDrawable(resource);
                                }

                                @Override
                                public void onLoadFailed(Drawable errorDrawable) {
                                    mAvatar.setImageDrawable(letterTile);
                                }
                            });

                }, mContext.getMainExecutor());
    }
}