From 9a625f8919189fd65de023bd15de5c64f7762b27 Mon Sep 17 00:00:00 2001 From: wangqi Date: Mon, 2 Apr 2018 14:32:09 -0700 Subject: Update contact photo for RTT call screen. Bug: 70177426 Test: manual PiperOrigin-RevId: 191348602 Change-Id: I332d53ab0c3c628b3dca0c184435bafcf2a13d02 --- .../android/incallui/rtt/impl/RttChatAdapter.java | 9 +++++- .../android/incallui/rtt/impl/RttChatFragment.java | 33 +++++++++++++++++++++- .../rtt/impl/RttChatMessageViewHolder.java | 5 ++-- .../rtt/impl/res/layout/rtt_chat_list_item.xml | 4 +-- .../incallui/rtt/impl/res/values/dimens.xml | 3 +- 5 files changed, 47 insertions(+), 7 deletions(-) (limited to 'java') diff --git a/java/com/android/incallui/rtt/impl/RttChatAdapter.java b/java/com/android/incallui/rtt/impl/RttChatAdapter.java index 955fc9fec..fb73d19c0 100644 --- a/java/com/android/incallui/rtt/impl/RttChatAdapter.java +++ b/java/com/android/incallui/rtt/impl/RttChatAdapter.java @@ -17,6 +17,7 @@ package com.android.incallui.rtt.impl; import android.content.Context; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -32,6 +33,8 @@ import java.util.List; /** Adapter class for holding RTT chat data. */ public class RttChatAdapter extends RecyclerView.Adapter { + private Drawable avatarDrawable; + interface MessageListener { void onUpdateRemoteMessage(int position); @@ -75,7 +78,7 @@ public class RttChatAdapter extends RecyclerView.Adapter 0) { isSameGroup = rttMessages.get(i).isRemote == rttMessages.get(i - 1).isRemote; } - rttChatMessageViewHolder.setMessage(rttMessages.get(i), isSameGroup); + rttChatMessageViewHolder.setMessage(rttMessages.get(i), isSameGroup, avatarDrawable); } @Override @@ -169,4 +172,8 @@ public class RttChatAdapter extends RecyclerView.Adapter) rttMessages); bundle.putInt(KEY_LAST_LOCAL_MESSAGE, lastIndexOfLocalMessage); } + + void setAvatarDrawable(Drawable drawable) { + avatarDrawable = drawable; + } } diff --git a/java/com/android/incallui/rtt/impl/RttChatFragment.java b/java/com/android/incallui/rtt/impl/RttChatFragment.java index a181f88f0..a889408c0 100644 --- a/java/com/android/incallui/rtt/impl/RttChatFragment.java +++ b/java/com/android/incallui/rtt/impl/RttChatFragment.java @@ -48,9 +48,12 @@ import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.common.UiUtil; +import com.android.dialer.lettertile.LetterTileDrawable; +import com.android.dialer.util.DrawableConverter; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; import com.android.incallui.call.DialerCall.State; import com.android.incallui.hold.OnHoldFragment; +import com.android.incallui.incall.protocol.ContactPhotoType; import com.android.incallui.incall.protocol.InCallButtonIds; import com.android.incallui.incall.protocol.InCallButtonUi; import com.android.incallui.incall.protocol.InCallButtonUiDelegate; @@ -95,7 +98,8 @@ public class RttChatFragment extends Fragment private RttOverflowMenu overflowMenu; private SecondaryInfo savedSecondaryInfo; private TextView statusBanner; - private PrimaryInfo primaryInfo; + private PrimaryInfo primaryInfo = PrimaryInfo.empty(); + private PrimaryCallState primaryCallState = PrimaryCallState.empty(); private boolean isUserScrolling; private boolean shouldAutoScrolling; @@ -366,9 +370,35 @@ public class RttChatFragment extends Fragment public void setPrimary(@NonNull PrimaryInfo primaryInfo) { LogUtil.i("RttChatFragment.setPrimary", primaryInfo.toString()); nameTextView.setText(primaryInfo.name()); + updateAvatar(primaryInfo); this.primaryInfo = primaryInfo; } + private void updateAvatar(PrimaryInfo primaryInfo) { + boolean hasPhoto = + primaryInfo.photo() != null && primaryInfo.photoType() == ContactPhotoType.CONTACT; + // Contact has a photo, don't render a letter tile. + if (hasPhoto) { + int avatarSize = getResources().getDimensionPixelSize(R.dimen.rtt_avatar_size); + adapter.setAvatarDrawable( + DrawableConverter.getRoundedDrawable( + getContext(), primaryInfo.photo(), avatarSize, avatarSize)); + } else { + LetterTileDrawable letterTile = new LetterTileDrawable(getResources()); + letterTile.setCanonicalDialerLetterTileDetails( + primaryInfo.name(), + primaryInfo.contactInfoLookupKey(), + LetterTileDrawable.SHAPE_CIRCLE, + LetterTileDrawable.getContactTypeFromPrimitives( + primaryCallState.isVoiceMailNumber(), + primaryInfo.isSpam(), + primaryCallState.isBusinessNumber(), + primaryInfo.numberPresentation(), + primaryCallState.isConference())); + adapter.setAvatarDrawable(letterTile); + } + } + @Override public void onAttach(Context context) { super.onAttach(context); @@ -404,6 +434,7 @@ public class RttChatFragment extends Fragment @Override public void setCallState(@NonNull PrimaryCallState primaryCallState) { LogUtil.i("RttChatFragment.setCallState", primaryCallState.toString()); + this.primaryCallState = primaryCallState; if (!isTimerStarted && primaryCallState.state() == State.ACTIVE) { LogUtil.i( "RttChatFragment.setCallState", "starting timer with base: %d", chronometer.getBase()); diff --git a/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java b/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java index c88786aa4..2beea9530 100644 --- a/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java +++ b/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java @@ -17,6 +17,7 @@ package com.android.incallui.rtt.impl; import android.content.res.Resources; +import android.graphics.drawable.Drawable; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.Gravity; import android.view.View; @@ -41,7 +42,7 @@ public class RttChatMessageViewHolder extends ViewHolder { resources = view.getResources(); } - void setMessage(RttChatMessage message, boolean isSameGroup) { + void setMessage(RttChatMessage message, boolean isSameGroup, Drawable imageDrawable) { messageTextView.setText(message.getContent()); LinearLayout.LayoutParams params = (LayoutParams) container.getLayoutParams(); params.gravity = message.isRemote ? Gravity.START : Gravity.END; @@ -56,7 +57,7 @@ public class RttChatMessageViewHolder extends ViewHolder { avatarImageView.setVisibility(View.INVISIBLE); } else { avatarImageView.setVisibility(View.VISIBLE); - avatarImageView.setImageResource(R.drawable.product_logo_avatar_anonymous_white_color_120); + avatarImageView.setImageDrawable(imageDrawable); } } else { avatarImageView.setVisibility(View.GONE); diff --git a/java/com/android/incallui/rtt/impl/res/layout/rtt_chat_list_item.xml b/java/com/android/incallui/rtt/impl/res/layout/rtt_chat_list_item.xml index 54b0f4f6a..5f1714250 100644 --- a/java/com/android/incallui/rtt/impl/res/layout/rtt_chat_list_item.xml +++ b/java/com/android/incallui/rtt/impl/res/layout/rtt_chat_list_item.xml @@ -26,8 +26,8 @@ android:orientation="horizontal"> 2dp 180dp 8dp - \ No newline at end of file + 40dp + -- cgit v1.2.3