Add RTT badge to new call log.
Bug: 77717594
Test: ContactPhotoViewTest
PiperOrigin-RevId: 192492913
Change-Id: I6db36017fde2cf9dca580d60d5c88bf2ad2dfe16
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
index 6b1a9e1..5fdf0df 100644
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ b/java/com/android/dialer/calllog/database/Coalescer.java
@@ -203,6 +203,11 @@
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 217208d..d1a654a 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.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 @@
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 d348541..d87888d 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 @@
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 @@
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 dd0b085..e16de3a 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 @@
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 @@
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 447cfe8..6fa21d8 100644
--- a/java/com/android/dialer/glidephotomanager/photo_info.proto
+++ b/java/com/android/dialer/glidephotomanager/photo_info.proto
@@ -9,7 +9,7 @@
// 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 @@
// 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 5020875..03d25de 100644
--- a/java/com/android/dialer/widget/ContactPhotoView.java
+++ b/java/com/android/dialer/widget/ContactPhotoView.java
@@ -37,6 +37,7 @@
private final QuickContactBadge contactPhoto;
private final FrameLayout contactBadgeContainer;
private final ImageView videoCallBadge;
+ private final ImageView rttCallBadge;
private final GlidePhotoManager glidePhotoManager;
@@ -61,6 +62,7 @@
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 @@
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 @@
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 2f5cd9e..a825ce3 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"/>
+
+ <ImageView
+ android:id="@+id/rtt_call_badge"
+ android:layout_width="13dp"
+ android:layout_height="13dp"
+ android:layout_gravity="center"
+ android:tint="@android:color/white"
+ android:src="@drawable/quantum_ic_rtt_vd_theme_24"/>
</FrameLayout>
</FrameLayout>
\ No newline at end of file