From b175d252b8801c4219343d7bff1b76ca1f2eb030 Mon Sep 17 00:00:00 2001 From: wangqi Date: Wed, 11 Apr 2018 12:45:07 -0700 Subject: Add RTT badge to new call log. Bug: 77717594 Test: ContactPhotoViewTest PiperOrigin-RevId: 192492913 Change-Id: I6db36017fde2cf9dca580d60d5c88bf2ad2dfe16 --- java/com/android/dialer/calllog/database/Coalescer.java | 5 +++++ java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java | 4 ++++ .../android/dialer/calllog/ui/menu/BottomSheetHeader.java | 4 ++++ java/com/android/dialer/calllog/ui/menu/Modules.java | 4 ++++ java/com/android/dialer/glidephotomanager/photo_info.proto | 5 ++++- java/com/android/dialer/widget/ContactPhotoView.java | 12 ++++++++++++ .../android/dialer/widget/res/layout/contact_photo_view.xml | 8 ++++++++ 7 files changed, 41 insertions(+), 1 deletion(-) (limited to 'java/com') diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java index 6b1a9e1f5..5fdf0dfd9 100644 --- a/java/com/android/dialer/calllog/database/Coalescer.java +++ b/java/com/android/dialer/calllog/database/Coalescer.java @@ -203,6 +203,11 @@ public class Coalescer { return false; } + // A RTT call should not be combined with one that is not a RTT call. + if ((row1Features & Calls.FEATURES_RTT) != (row2Features & Calls.FEATURES_RTT)) { + return false; + } + return true; } diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java index 217208d17..d1a654a09 100644 --- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java +++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java @@ -21,6 +21,7 @@ import android.content.res.ColorStateList; import android.database.Cursor; import android.provider.CallLog.Calls; import android.support.annotation.DrawableRes; +import android.support.v4.os.BuildCompat; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; @@ -152,6 +153,9 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder { NumberAttributesConverter.toPhotoInfoBuilder(row.getNumberAttributes()) .setFormattedNumber(row.getFormattedNumber()) .setIsVideo((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) + .setIsRtt( + BuildCompat.isAtLeastP() + && (row.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT) .setIsVoicemail(row.getIsVoicemailCall()) .build()); } diff --git a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java index d348541d7..d87888d34 100644 --- a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java +++ b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java @@ -18,6 +18,7 @@ package com.android.dialer.calllog.ui.menu; import android.content.Context; import android.provider.CallLog.Calls; +import android.support.v4.os.BuildCompat; import com.android.dialer.calllog.model.CoalescedRow; import com.android.dialer.calllogutils.CallLogEntryText; import com.android.dialer.calllogutils.NumberAttributesConverter; @@ -33,6 +34,9 @@ final class BottomSheetHeader { NumberAttributesConverter.toPhotoInfoBuilder(row.getNumberAttributes()) .setFormattedNumber(row.getFormattedNumber()) .setIsVideo((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) + .setIsRtt( + BuildCompat.isAtLeastP() + && (row.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT) .build()) .setPrimaryText(CallLogEntryText.buildPrimaryText(context, row).toString()) .setSecondaryText( diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java index dd0b0851e..e16de3af1 100644 --- a/java/com/android/dialer/calllog/ui/menu/Modules.java +++ b/java/com/android/dialer/calllog/ui/menu/Modules.java @@ -18,6 +18,7 @@ package com.android.dialer.calllog.ui.menu; import android.content.Context; import android.provider.CallLog.Calls; +import android.support.v4.os.BuildCompat; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.text.TextUtils; @@ -211,6 +212,9 @@ final class Modules { return NumberAttributesConverter.toPhotoInfoBuilder(row.getNumberAttributes()) .setFormattedNumber(row.getFormattedNumber()) .setIsVideo((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) + .setIsRtt( + BuildCompat.isAtLeastP() + && (row.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT) .setIsVoicemail(row.getIsVoicemailCall()) .build(); } diff --git a/java/com/android/dialer/glidephotomanager/photo_info.proto b/java/com/android/dialer/glidephotomanager/photo_info.proto index 447cfe83f..6fa21d886 100644 --- a/java/com/android/dialer/glidephotomanager/photo_info.proto +++ b/java/com/android/dialer/glidephotomanager/photo_info.proto @@ -9,7 +9,7 @@ package com.android.dialer.glidephotomanager; // Contains information associated with a number, which is used to create the // photo. -// Next ID: 11 +// Next ID: 12 message PhotoInfo { // The display name of the number. optional string name = 1; @@ -41,4 +41,7 @@ message PhotoInfo { // Whether the photo should be badged as video call. optional bool is_video = 10; + + // Whether the photo should be badged as RTT call. + optional bool is_rtt = 11; } diff --git a/java/com/android/dialer/widget/ContactPhotoView.java b/java/com/android/dialer/widget/ContactPhotoView.java index 5020875dc..03d25de7d 100644 --- a/java/com/android/dialer/widget/ContactPhotoView.java +++ b/java/com/android/dialer/widget/ContactPhotoView.java @@ -37,6 +37,7 @@ public final class ContactPhotoView extends FrameLayout { private final QuickContactBadge contactPhoto; private final FrameLayout contactBadgeContainer; private final ImageView videoCallBadge; + private final ImageView rttCallBadge; private final GlidePhotoManager glidePhotoManager; @@ -61,6 +62,7 @@ public final class ContactPhotoView extends FrameLayout { contactPhoto = findViewById(R.id.quick_contact_photo); contactBadgeContainer = findViewById(R.id.contact_badge_container); videoCallBadge = findViewById(R.id.video_call_badge); + rttCallBadge = findViewById(R.id.rtt_call_badge); glidePhotoManager = GlidePhotoManagerComponent.get(context).glidePhotoManager(); @@ -75,6 +77,7 @@ public final class ContactPhotoView extends FrameLayout { private void hideBadge() { contactBadgeContainer.setVisibility(View.INVISIBLE); videoCallBadge.setVisibility(View.INVISIBLE); + rttCallBadge.setVisibility(View.INVISIBLE); } /** Sets the contact photo and its badge to be displayed. */ @@ -93,6 +96,15 @@ public final class ContactPhotoView extends FrameLayout { if (photoInfo.getIsVideo()) { contactBadgeContainer.setVisibility(View.VISIBLE); videoCallBadge.setVisibility(View.VISIBLE); + // Normally a video call can't be RTT call and vice versa. + // (a bug): In theory a video call could be downgraded to voice and upgraded to RTT call + // again, this might end up a call with video and RTT features both set. Update logic here if + // that could happen. Also update {@link Coalescer#meetsCallFeatureCriteria}. + rttCallBadge.setVisibility(INVISIBLE); + } else if (photoInfo.getIsRtt()) { + contactBadgeContainer.setVisibility(View.VISIBLE); + videoCallBadge.setVisibility(INVISIBLE); + rttCallBadge.setVisibility(View.VISIBLE); } else { hideBadge(); } diff --git a/java/com/android/dialer/widget/res/layout/contact_photo_view.xml b/java/com/android/dialer/widget/res/layout/contact_photo_view.xml index 2f5cd9e3d..a825ce38b 100644 --- a/java/com/android/dialer/widget/res/layout/contact_photo_view.xml +++ b/java/com/android/dialer/widget/res/layout/contact_photo_view.xml @@ -47,5 +47,13 @@ android:layout_height="13dp" android:layout_gravity="center" android:src="@drawable/quantum_ic_videocam_vd_white_24"/> + + \ No newline at end of file -- cgit v1.2.3