From e00bbaeceb399da24f06c8f1a626cbbf07eab4ad Mon Sep 17 00:00:00 2001 From: wangqi Date: Tue, 17 Apr 2018 14:48:03 -0700 Subject: Add RTT transcript screen. Bug: 67596257 Test: CallDetailsCursorLoaderTest PiperOrigin-RevId: 193259769 Change-Id: I8c6a8eb9a6bf06e9c1c25c45fc035f8db8ae5a65 --- .../dialer/calldetails/CallDetailsActivity.java | 3 ++ .../calldetails/CallDetailsActivityCommon.java | 31 +++++++++++++++++++- .../dialer/calldetails/CallDetailsAdapter.java | 14 +++++++++ .../calldetails/CallDetailsAdapterCommon.java | 15 +++++++++- .../calldetails/CallDetailsCursorLoader.java | 5 +++- .../calldetails/CallDetailsEntryViewHolder.java | 19 ++++++++++++- .../dialer/calldetails/OldCallDetailsActivity.java | 3 ++ .../dialer/calldetails/OldCallDetailsAdapter.java | 33 ++++++++++++++++++++++ .../calldetails/proto/call_details_entries.proto | 8 ++++++ 9 files changed, 127 insertions(+), 4 deletions(-) (limited to 'java/com/android/dialer/calldetails') diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java index 4fab7fd85..f1d0d8487 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java @@ -23,6 +23,7 @@ import android.content.Loader; import android.database.Cursor; import android.os.Bundle; import com.android.dialer.CoalescedIds; +import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; @@ -89,6 +90,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { @Override protected CallDetailsAdapterCommon createAdapter( + CallDetailsEntryListener callDetailsEntryListener, CallDetailsHeaderListener callDetailsHeaderListener, ReportCallIdListener reportCallIdListener, DeleteCallDetailsListener deleteCallDetailsListener) { @@ -96,6 +98,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { this, headerInfo, getCallDetailsEntries(), + callDetailsEntryListener, callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); diff --git a/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java b/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java index 15a010eba..dec1230bd 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java @@ -55,12 +55,14 @@ import com.android.dialer.duo.DuoComponent; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult; +import com.android.dialer.glidephotomanager.PhotoInfo; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.logging.UiAction; import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.postcall.PostCall; import com.android.dialer.precall.PreCall; +import com.android.dialer.rtt.RttTranscriptActivity; import com.android.dialer.rtt.RttTranscriptUtil; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ListenableFuture; @@ -84,6 +86,8 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { public static final String EXTRA_CAN_REPORT_CALLER_ID = "can_report_caller_id"; public static final String EXTRA_CAN_SUPPORT_ASSISTED_DIALING = "can_support_assisted_dialing"; + private final CallDetailsEntryViewHolder.CallDetailsEntryListener callDetailsEntryListener = + new CallDetailsEntryListener(this); private final CallDetailsHeaderViewHolder.CallDetailsHeaderListener callDetailsHeaderListener = new CallDetailsHeaderListener(this); private final CallDetailsFooterViewHolder.DeleteCallDetailsListener deleteCallDetailsListener = @@ -106,6 +110,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { /** Creates an adapter for {@link OldCallDetailsActivity} or {@link CallDetailsActivity}. */ protected abstract CallDetailsAdapterCommon createAdapter( + CallDetailsEntryViewHolder.CallDetailsEntryListener callDetailsEntryListener, CallDetailsHeaderViewHolder.CallDetailsHeaderListener callDetailsHeaderListener, CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener, CallDetailsFooterViewHolder.DeleteCallDetailsListener deleteCallDetailsListener); @@ -212,7 +217,11 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { private void setupRecyclerViewForEntries() { adapter = - createAdapter(callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); + createAdapter( + callDetailsEntryListener, + callDetailsHeaderListener, + reportCallIdListener, + deleteCallDetailsListener); RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -288,6 +297,26 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { } } + private static final class CallDetailsEntryListener + implements CallDetailsEntryViewHolder.CallDetailsEntryListener { + private final WeakReference activityWeakReference; + + CallDetailsEntryListener(CallDetailsActivityCommon activity) { + this.activityWeakReference = new WeakReference<>(activity); + } + + @Override + public void showRttTranscript(String transcriptId, String primaryText, PhotoInfo photoInfo) { + getActivity() + .startActivity( + RttTranscriptActivity.getIntent(getActivity(), transcriptId, primaryText, photoInfo)); + } + + private CallDetailsActivityCommon getActivity() { + return Preconditions.checkNotNull(activityWeakReference.get()); + } + } + private static final class CallDetailsHeaderListener implements CallDetailsHeaderViewHolder.CallDetailsHeaderListener { private final WeakReference activityWeakReference; diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java index 2a4c1efca..40d856fa7 100644 --- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java +++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java @@ -20,8 +20,10 @@ package com.android.dialer.calldetails; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; +import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; +import com.android.dialer.glidephotomanager.PhotoInfo; /** * A {@link RecyclerView.Adapter} for {@link CallDetailsActivity}. @@ -38,12 +40,14 @@ final class CallDetailsAdapter extends CallDetailsAdapterCommon { Context context, CallDetailsHeaderInfo calldetailsHeaderInfo, CallDetailsEntries callDetailsEntries, + CallDetailsEntryListener callDetailsEntryListener, CallDetailsHeaderListener callDetailsHeaderListener, CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener, DeleteCallDetailsListener deleteCallDetailsListener) { super( context, callDetailsEntries, + callDetailsEntryListener, callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); @@ -72,4 +76,14 @@ final class CallDetailsAdapter extends CallDetailsAdapterCommon { protected String getNumber() { return headerInfo.getDialerPhoneNumber().getNormalizedNumber(); } + + @Override + protected String getPrimaryText() { + return headerInfo.getPrimaryText(); + } + + @Override + protected PhotoInfo getPhotoInfo() { + return headerInfo.getPhotoInfo(); + } } diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java b/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java index a79642bad..ec9263f1f 100644 --- a/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java +++ b/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java @@ -25,6 +25,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry; +import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; @@ -33,6 +34,7 @@ import com.android.dialer.calllogutils.CallbackActionHelper; import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction; import com.android.dialer.common.Assert; import com.android.dialer.duo.DuoComponent; +import com.android.dialer.glidephotomanager.PhotoInfo; /** * Contains common logic shared between {@link OldCallDetailsAdapter} and {@link @@ -44,6 +46,7 @@ abstract class CallDetailsAdapterCommon extends RecyclerView.Adapter + callDetailsEntryListener.showRttTranscript( + entry.getCallMappingId(), primaryText, photoInfo)); } else { rttTranscript.setText(R.string.rtt_transcript_not_available); rttTranscript.setTextAppearance(R.style.RttTranscriptMessage); diff --git a/java/com/android/dialer/calldetails/OldCallDetailsActivity.java b/java/com/android/dialer/calldetails/OldCallDetailsActivity.java index c97436759..26217ab8a 100644 --- a/java/com/android/dialer/calldetails/OldCallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/OldCallDetailsActivity.java @@ -18,6 +18,7 @@ package com.android.dialer.calldetails; import android.content.Context; import android.content.Intent; +import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; @@ -76,6 +77,7 @@ public final class OldCallDetailsActivity extends CallDetailsActivityCommon { @Override protected CallDetailsAdapterCommon createAdapter( + CallDetailsEntryListener callDetailsEntryListener, CallDetailsHeaderListener callDetailsHeaderListener, ReportCallIdListener reportCallIdListener, DeleteCallDetailsListener deleteCallDetailsListener) { @@ -83,6 +85,7 @@ public final class OldCallDetailsActivity extends CallDetailsActivityCommon { /* context = */ this, contact, getCallDetailsEntries(), + callDetailsEntryListener, callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); diff --git a/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java b/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java index 010f5cd6c..878803cc3 100644 --- a/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java +++ b/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java @@ -20,9 +20,12 @@ package com.android.dialer.calldetails; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; +import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener; import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; import com.android.dialer.dialercontact.DialerContact; +import com.android.dialer.glidephotomanager.PhotoInfo; +import com.android.dialer.lettertile.LetterTileDrawable; /** * A {@link RecyclerView.Adapter} for {@link OldCallDetailsActivity}. @@ -39,12 +42,14 @@ final class OldCallDetailsAdapter extends CallDetailsAdapterCommon { Context context, DialerContact contact, CallDetailsEntries callDetailsEntries, + CallDetailsEntryListener callDetailsEntryListener, CallDetailsHeaderListener callDetailsHeaderListener, CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener, DeleteCallDetailsListener deleteCallDetailsListener) { super( context, callDetailsEntries, + callDetailsEntryListener, callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); @@ -70,4 +75,32 @@ final class OldCallDetailsAdapter extends CallDetailsAdapterCommon { protected String getNumber() { return contact.getNumber(); } + + @Override + protected String getPrimaryText() { + return contact.getNameOrNumber(); + } + + @Override + protected PhotoInfo getPhotoInfo() { + PhotoInfo.Builder builder = + PhotoInfo.newBuilder() + .setPhotoUri(contact.getPhotoUri()) + .setPhotoId(contact.getPhotoId()) + .setName(contact.getNameOrNumber()) + .setLookupUri(contact.getContactUri()); + switch (contact.getContactType()) { + case LetterTileDrawable.TYPE_VOICEMAIL: + builder.setIsVoicemail(true); + break; + case LetterTileDrawable.TYPE_BUSINESS: + builder.setIsBusiness(true); + break; + case LetterTileDrawable.TYPE_SPAM: + builder.setIsSpam(true); + break; + default: // fall out + } + return builder.build(); + } } diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto index e0202cda1..0f11b537e 100644 --- a/java/com/android/dialer/calldetails/proto/call_details_entries.proto +++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto @@ -20,6 +20,14 @@ message CallDetailsEntries { repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7; optional bool is_duo_call = 8; optional bool has_rtt_transcript = 9; + // A unique ID that could be used to map a call log entry to a {@link + // android.telecom.Call}. This is different from call_id which is id of call + // log entry. + // On pre-Q this will be {@link android.provider.CallLog.Calls#DATE} which + // is same as {@link com.android.telecom.Call#getCreationTimeMillis()}. + // Starting from Q this will be a call UUID generated by system to associate + // a call log to a telecom call. + optional string call_mapping_id = 10; } repeated CallDetailsEntry entries = 1; -- cgit v1.2.3