From 6b576be4554a219088b3d24f91c6e79819a4ac1b Mon Sep 17 00:00:00 2001 From: linyuh Date: Thu, 15 Mar 2018 10:13:54 -0700 Subject: Introduce GlidePhotoManager to CallDetailsActivity Bug: 74202944 Test: ModulesTest, CallDetailsActivityTest PiperOrigin-RevId: 189204143 Change-Id: I917bac76009522c6a99fdb63299556ec2a454dfa --- .../dialer/calldetails/CallDetailsActivity.java | 19 +++++++----- .../dialer/calldetails/CallDetailsAdapter.java | 18 ++++++----- .../calldetails/CallDetailsHeaderViewHolder.java | 14 +++++++++ .../proto/call_details_header_info.proto | 36 ++++++++++++++++++++++ 4 files changed, 72 insertions(+), 15 deletions(-) create mode 100644 java/com/android/dialer/calldetails/proto/call_details_header_info.proto (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 672043b6e..4dc294e76 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java @@ -28,7 +28,6 @@ import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdLi import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog; import com.android.dialer.common.Assert; -import com.android.dialer.dialercontact.DialerContact; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.protos.ProtoParsers; @@ -42,26 +41,27 @@ import com.android.dialer.protos.ProtoParsers; */ public final class CallDetailsActivity extends CallDetailsActivityCommon { public static final String EXTRA_COALESCED_CALL_LOG_IDS = "coalesced_call_log_ids"; - public static final String EXTRA_CONTACT = "contact"; + public static final String EXTRA_HEADER_INFO = "header_info"; private static final int CALL_DETAILS_LOADER_ID = 0; /** IDs of call log entries, used to retrieve them from the annotated call log. */ private CoalescedIds coalescedCallLogIds; - private DialerContact contact; + /** Info to be shown in the header. */ + private CallDetailsHeaderInfo headerInfo; /** Returns an {@link Intent} to launch this activity. */ public static Intent newInstance( Context context, CoalescedIds coalescedAnnotatedCallLogIds, - DialerContact contact, + CallDetailsHeaderInfo callDetailsHeaderInfo, boolean canReportCallerId, boolean canSupportAssistedDialing) { Intent intent = new Intent(context, CallDetailsActivity.class); - ProtoParsers.put(intent, EXTRA_CONTACT, Assert.isNotNull(contact)); ProtoParsers.put( intent, EXTRA_COALESCED_CALL_LOG_IDS, Assert.isNotNull(coalescedAnnotatedCallLogIds)); + ProtoParsers.put(intent, EXTRA_HEADER_INFO, Assert.isNotNull(callDetailsHeaderInfo)); intent.putExtra(EXTRA_CAN_REPORT_CALLER_ID, canReportCallerId); intent.putExtra(EXTRA_CAN_SUPPORT_ASSISTED_DIALING, canSupportAssistedDialing); return intent; @@ -70,14 +70,17 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { @Override protected void handleIntent(Intent intent) { Assert.checkArgument(intent.hasExtra(EXTRA_COALESCED_CALL_LOG_IDS)); + Assert.checkArgument(intent.hasExtra(EXTRA_HEADER_INFO)); Assert.checkArgument(intent.hasExtra(EXTRA_CAN_REPORT_CALLER_ID)); Assert.checkArgument(intent.hasExtra(EXTRA_CAN_SUPPORT_ASSISTED_DIALING)); - contact = ProtoParsers.getTrusted(intent, EXTRA_CONTACT, DialerContact.getDefaultInstance()); setCallDetailsEntries(CallDetailsEntries.getDefaultInstance()); coalescedCallLogIds = ProtoParsers.getTrusted( intent, EXTRA_COALESCED_CALL_LOG_IDS, CoalescedIds.getDefaultInstance()); + headerInfo = + ProtoParsers.getTrusted( + intent, EXTRA_HEADER_INFO, CallDetailsHeaderInfo.getDefaultInstance()); getLoaderManager() .initLoader( @@ -91,7 +94,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { DeleteCallDetailsListener deleteCallDetailsListener) { return new CallDetailsAdapter( this, - contact, + headerInfo, getCallDetailsEntries(), callDetailsHeaderListener, reportCallIdListener, @@ -100,7 +103,7 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { @Override protected String getNumber() { - return contact.getNumber(); + return headerInfo.getDialerPhoneNumber().getNormalizedNumber(); } /** diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java index dfa472a71..2a4c1efca 100644 --- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java +++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java @@ -16,12 +16,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.CallDetailsFooterViewHolder.DeleteCallDetailsListener; import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener; -import com.android.dialer.dialercontact.DialerContact; /** * A {@link RecyclerView.Adapter} for {@link CallDetailsActivity}. @@ -31,11 +31,12 @@ import com.android.dialer.dialercontact.DialerContact; */ final class CallDetailsAdapter extends CallDetailsAdapterCommon { - private final DialerContact contact; + /** Info to be shown in the header. */ + private final CallDetailsHeaderInfo headerInfo; CallDetailsAdapter( Context context, - DialerContact contact, + CallDetailsHeaderInfo calldetailsHeaderInfo, CallDetailsEntries callDetailsEntries, CallDetailsHeaderListener callDetailsHeaderListener, CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener, @@ -46,26 +47,29 @@ final class CallDetailsAdapter extends CallDetailsAdapterCommon { callDetailsHeaderListener, reportCallIdListener, deleteCallDetailsListener); - this.contact = contact; + this.headerInfo = calldetailsHeaderInfo; } @Override protected CallDetailsHeaderViewHolder createCallDetailsHeaderViewHolder( View container, CallDetailsHeaderListener callDetailsHeaderListener) { return new CallDetailsHeaderViewHolder( - container, contact.getNumber(), contact.getPostDialDigits(), callDetailsHeaderListener); + container, + headerInfo.getDialerPhoneNumber().getNormalizedNumber(), + headerInfo.getDialerPhoneNumber().getPostDialPortion(), + callDetailsHeaderListener); } @Override protected void bindCallDetailsHeaderViewHolder( CallDetailsHeaderViewHolder callDetailsHeaderViewHolder, int position) { - callDetailsHeaderViewHolder.updateContactInfo(contact, getCallbackAction()); + callDetailsHeaderViewHolder.updateContactInfo(headerInfo, getCallbackAction()); callDetailsHeaderViewHolder.updateAssistedDialingInfo( getCallDetailsEntries().getEntries(position)); } @Override protected String getNumber() { - return contact.getNumber(); + return headerInfo.getDialerPhoneNumber().getNormalizedNumber(); } } diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java index 34ed68836..e4fded173 100644 --- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java +++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java @@ -37,6 +37,7 @@ import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener; import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.contactphoto.ContactPhotoManager; import com.android.dialer.dialercontact.DialerContact; +import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent; import com.android.dialer.logging.InteractionEvent; import com.android.dialer.logging.Logger; @@ -182,6 +183,19 @@ public class CallDetailsHeaderViewHolder extends RecyclerView.ViewHolder setCallbackAction(callbackAction); } + void updateContactInfo(CallDetailsHeaderInfo headerInfo, @CallbackAction int callbackAction) { + GlidePhotoManagerComponent.get(context) + .glidePhotoManager() + .loadQuickContactBadge(contactPhoto, headerInfo.getPhotoInfo()); + + nameView.setText(headerInfo.getPrimaryText()); + numberView.setText(headerInfo.getSecondaryText()); + + // TODO(a bug): show SIM info in the TextView returned by getNetworkView(). + + setCallbackAction(callbackAction); + } + private void setCallbackAction(@CallbackAction int callbackAction) { this.callbackAction = callbackAction; switch (callbackAction) { diff --git a/java/com/android/dialer/calldetails/proto/call_details_header_info.proto b/java/com/android/dialer/calldetails/proto/call_details_header_info.proto new file mode 100644 index 000000000..ea7ba1e72 --- /dev/null +++ b/java/com/android/dialer/calldetails/proto/call_details_header_info.proto @@ -0,0 +1,36 @@ +syntax = "proto2"; + +option java_package = "com.android.dialer.calldetails"; +option java_multiple_files = true; +option optimize_for = LITE_RUNTIME; + + +import "java/com/android/dialer/phonenumberproto/dialer_phone_number.proto"; +import "java/com/android/dialer/glidephotomanager/photo_info.proto"; + +package com.android.dialer.calldetails; + +// Contains information for the header in CallDetailsActivity +// Next ID: 5 +message CallDetailsHeaderInfo { + // The number of all call detail entries. + optional com.android.dialer.DialerPhoneNumber dialer_phone_number = 1; + + // Information used to load the contact photo. + optional com.android.dialer.glidephotomanager.PhotoInfo photo_info = 2; + + // Primary text of the header, which can be + // (1) a presentation name (e.g., "Restricted", "Unknown", etc.), + // (2) the contact name, or + // (3) the formatted number. + optional string primary_text = 3; + + // Secondary test of the header, which describes the number. + // Some examples are: + // "Mobile • 555-1234", + // "Blocked • Mobile • 555-1234", and + // "Spam • Mobile • 555-1234". + optional string secondary_text = 4; + + // TODO(a bug): Add SIM info. +} \ No newline at end of file -- cgit v1.2.3