diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-04-11 21:22:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-04-11 21:22:26 +0000 |
commit | d4d9fb5e6dcaa284c955d112f21cc420f0f7f3f2 (patch) | |
tree | 4d0aa7d6f8a6ded1f9c71f2165113988c8872469 /java | |
parent | 6e714e712a91f7eb3c12ed76ba2482e2714c2bc1 (diff) | |
parent | b175d252b8801c4219343d7bff1b76ca1f2eb030 (diff) |
Merge changes I6db36017,I0f0b44e5
* changes:
Add RTT badge to new call log.
Update logic for incoming and active calls.
Diffstat (limited to 'java')
9 files changed, 49 insertions, 5 deletions
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"/> + + <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 diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java index a0c76f345..0b79e4be7 100644 --- a/java/com/android/incallui/AnswerScreenPresenter.java +++ b/java/com/android/incallui/AnswerScreenPresenter.java @@ -140,7 +140,9 @@ public class AnswerScreenPresenter return; } incomingCall.setIsSpeakEasyCall(true); - incomingCall.answer(); + InCallActivity inCallActivity = + (InCallActivity) answerScreen.getAnswerScreenFragment().getActivity(); + inCallActivity.onPrimaryCallStateChanged(); } @Override diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java index 8f0fbadff..0c57dff7b 100644 --- a/java/com/android/incallui/InCallActivity.java +++ b/java/com/android/incallui/InCallActivity.java @@ -1396,8 +1396,10 @@ public class InCallActivity extends TransactionSafeFragmentActivity return new ShouldShowUiResult(false, null); } - // TODO(erfanian): Get a better call? - DialerCall call = CallList.getInstance().getActiveCall(); + DialerCall call = + CallList.getInstance().getIncomingCall() != null + ? CallList.getInstance().getIncomingCall() + : CallList.getInstance().getActiveCall(); if (call == null) { return new ShouldShowUiResult(false, call); @@ -1417,7 +1419,7 @@ public class InCallActivity extends TransactionSafeFragmentActivity private ShouldShowUiResult getShouldShowAnswerUi() { DialerCall call = CallList.getInstance().getIncomingCall(); - if (call != null) { + if (call != null && !call.isSpeakEasyCall()) { LogUtil.i("InCallActivity.getShouldShowAnswerUi", "found incoming call"); return new ShouldShowUiResult(true, call); } |