diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/car/dialer/ui/common/UiCallLogLiveData.java | 3 | ||||
-rw-r--r-- | src/com/android/car/dialer/ui/dialpad/DialpadFragment.java | 45 |
2 files changed, 43 insertions, 5 deletions
diff --git a/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java b/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java index 9a5e8467..d200b602 100644 --- a/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java +++ b/src/com/android/car/dialer/ui/common/UiCallLogLiveData.java @@ -149,7 +149,8 @@ public class UiCallLogLiveData extends MediatorLiveData<List<Object>> { } else { title = mContext.getString(R.string.unknown); } - PhoneNumber phoneNumber = contact != null ? contact.getPhoneNumber(number) : null; + PhoneNumber phoneNumber = contact != null + ? contact.getPhoneNumber(mContext, number) : null; UiCallLog uiCallLog = new UiCallLog( title, diff --git a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java index e0a2f5a2..94a22d6e 100644 --- a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java @@ -28,6 +28,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -37,8 +38,10 @@ import com.android.car.apps.common.util.ViewUtils; import com.android.car.dialer.R; import com.android.car.dialer.log.L; import com.android.car.dialer.telecom.UiCallManager; +import com.android.car.dialer.ui.view.ContactAvatarOutputlineProvider; import com.android.car.telephony.common.Contact; import com.android.car.telephony.common.InMemoryPhoneBook; +import com.android.car.telephony.common.PhoneNumber; import com.android.car.telephony.common.TelecomUtils; import com.google.common.annotations.VisibleForTesting; @@ -74,7 +77,12 @@ public class DialpadFragment extends AbstractDialpadFragment { .build(); private TextView mTitleView; + @Nullable private TextView mDisplayName; + @Nullable + private TextView mLabel; + @Nullable + private ImageView mAvatar; private ImageButton mDeleteButton; private int mMode; @@ -122,6 +130,11 @@ public class DialpadFragment extends AbstractDialpadFragment { mMode == MODE_EMERGENCY ? R.style.TextAppearance_EmergencyDialNumber : R.style.TextAppearance_DialNumber); mDisplayName = rootView.findViewById(R.id.display_name); + mLabel = rootView.findViewById(R.id.label); + mAvatar = rootView.findViewById(R.id.dialpad_contact_avatar); + if (mAvatar != null) { + mAvatar.setOutlineProvider(ContactAvatarOutputlineProvider.get()); + } View callButton = rootView.findViewById(R.id.call_button); callButton.setOnClickListener(v -> { @@ -222,13 +235,37 @@ public class DialpadFragment extends AbstractDialpadFragment { ViewUtils.setVisible(mDeleteButton, true); } - presentContactName(number); + presentContactInfo(number.toString()); } - private void presentContactName(@NonNull StringBuffer number) { - Contact contact = InMemoryPhoneBook.get().lookupContactEntry(number.toString()); - // OEM might remove the display name view. + private void presentContactInfo(@NonNull String number) { + Contact contact = InMemoryPhoneBook.get().lookupContactEntry(number); ViewUtils.setText(mDisplayName, contact == null ? "" : contact.getDisplayName()); + if (contact != null && getResources().getBoolean( + R.bool.config_show_detailed_user_profile_on_dialpad)) { + presentContactDetail(contact, number); + } else { + resetContactInfo(); + } + } + + private void presentContactDetail(@Nullable Contact contact, @NonNull String number) { + PhoneNumber phoneNumber = contact.getPhoneNumber(getContext(), number); + CharSequence readableLabel = phoneNumber.getReadableLabel( + getContext().getResources()); + ViewUtils.setText(mLabel, phoneNumber.isPrimary() ? getContext().getString( + R.string.primary_number_description, readableLabel) : readableLabel); + ViewUtils.setVisible(mLabel, true); + + if (mAvatar != null) { + TelecomUtils.setContactBitmapAsync(getContext(), mAvatar, contact, null); + } + ViewUtils.setVisible(mAvatar, true); + } + + private void resetContactInfo() { + ViewUtils.setVisible(mLabel, false); + ViewUtils.setVisible(mAvatar, false); } private int getTopOffset() { |