summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-03-15 10:13:54 -0700
committerCopybara-Service <copybara-piper@google.com>2018-03-15 10:29:13 -0700
commit6b576be4554a219088b3d24f91c6e79819a4ac1b (patch)
treea32028c87e2535b542358a8a33e35e3b3e76c5f1
parent94067bd7f3a568fdabfaeb7a4980e9a85cd9b5c3 (diff)
Introduce GlidePhotoManager to CallDetailsActivity
Bug: 74202944 Test: ModulesTest, CallDetailsActivityTest PiperOrigin-RevId: 189204143 Change-Id: I917bac76009522c6a99fdb63299556ec2a454dfa
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsActivity.java19
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsAdapter.java18
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java14
-rw-r--r--java/com/android/dialer/calldetails/proto/call_details_header_info.proto36
-rw-r--r--java/com/android/dialer/calllog/ui/menu/Modules.java57
-rw-r--r--java/com/android/dialer/calllogutils/CallLogContactTypes.java38
-rw-r--r--java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java2
7 files changed, 95 insertions, 89 deletions
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
diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java
index 184f7abf0..fd5f6a348 100644
--- a/java/com/android/dialer/calllog/ui/menu/Modules.java
+++ b/java/com/android/dialer/calllog/ui/menu/Modules.java
@@ -22,11 +22,12 @@ import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
import com.android.dialer.calldetails.CallDetailsActivity;
+import com.android.dialer.calldetails.CallDetailsHeaderInfo;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.calllogutils.CallLogContactTypes;
-import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
-import com.android.dialer.dialercontact.DialerContact;
+import com.android.dialer.calllogutils.CallLogEntryText;
+import com.android.dialer.calllogutils.NumberAttributesConverter;
+import com.android.dialer.glidephotomanager.PhotoInfo;
import com.android.dialer.historyitemactions.DividerModule;
import com.android.dialer.historyitemactions.HistoryItemActionModule;
import com.android.dialer.historyitemactions.IntentModule;
@@ -106,8 +107,6 @@ final class Modules {
}
}
- // TODO(zachh): Revisit if DialerContact is the best thing to pass to CallDetails; could
- // it use a HistoryItemPrimaryActionInfo instead?
modules.add(createModuleForAccessingCallDetails(context, row));
modules.add(new DeleteCallLogItemModule(context, row.coalescedIds()));
@@ -156,43 +155,31 @@ final class Modules {
CallDetailsActivity.newInstance(
context,
row.coalescedIds(),
- createDialerContactFromRow(context, row),
+ createCallDetailsHeaderInfoFromRow(context, row),
canReportAsInvalidNumber,
canSupportAssistedDialing),
R.string.call_details_menu_label,
R.drawable.quantum_ic_info_outline_vd_theme_24);
}
- private static DialerContact createDialerContactFromRow(Context context, CoalescedRow row) {
- Optional<String> presentationName =
- PhoneNumberDisplayUtil.getNameForPresentation(context, row.numberPresentation());
- if (presentationName.isPresent()) {
- return DialerContact.newBuilder()
- .setNameOrNumber(presentationName.get())
- .setContactType(CallLogContactTypes.getContactType(row))
- .build();
- }
+ private static CallDetailsHeaderInfo createCallDetailsHeaderInfoFromRow(
+ Context context, CoalescedRow row) {
+ return CallDetailsHeaderInfo.newBuilder()
+ .setDialerPhoneNumber(row.number())
+ .setPhotoInfo(createPhotoInfoFromRow(row))
+ .setPrimaryText(CallLogEntryText.buildPrimaryText(context, row).toString())
+ .setSecondaryText(
+ CallLogEntryText.buildSecondaryTextForBottomSheet(context, row).toString())
+ .build();
+ }
- String normalizedNumber = row.number().getNormalizedNumber();
- DialerContact.Builder dialerContactBuilder =
- DialerContact.newBuilder()
- .setNumber(normalizedNumber)
- .setContactType(CallLogContactTypes.getContactType(row))
- .setPhotoId(row.numberAttributes().getPhotoId());
-
- if (!row.numberAttributes().getName().isEmpty()) {
- dialerContactBuilder.setNameOrNumber(row.numberAttributes().getName());
- if (row.formattedNumber() != null) {
- dialerContactBuilder.setDisplayNumber(row.formattedNumber());
- }
- } else if (!TextUtils.isEmpty(row.formattedNumber())) {
- dialerContactBuilder.setNameOrNumber(row.formattedNumber());
+ private static PhotoInfo createPhotoInfoFromRow(CoalescedRow row) {
+ PhotoInfo.Builder photoInfoBuilder =
+ NumberAttributesConverter.toPhotoInfoBuilder(row.numberAttributes())
+ .setIsVideo((row.features() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
+ if (!TextUtils.isEmpty(row.formattedNumber())) {
+ photoInfoBuilder.setFormattedNumber(row.formattedNumber());
}
-
- dialerContactBuilder.setNumberLabel(row.numberAttributes().getNumberTypeLabel());
- dialerContactBuilder.setPhotoUri(row.numberAttributes().getPhotoUri());
- dialerContactBuilder.setContactUri(row.numberAttributes().getLookupUri());
-
- return dialerContactBuilder.build();
+ return photoInfoBuilder.build();
}
}
diff --git a/java/com/android/dialer/calllogutils/CallLogContactTypes.java b/java/com/android/dialer/calllogutils/CallLogContactTypes.java
deleted file mode 100644
index 58651560f..000000000
--- a/java/com/android/dialer/calllogutils/CallLogContactTypes.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.calllogutils;
-
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.lettertile.LetterTileDrawable;
-
-/** Determines the {@link LetterTileDrawable.ContactType} for a {@link CoalescedRow}. */
-public class CallLogContactTypes {
-
- /** Determines the {@link LetterTileDrawable.ContactType} for a {@link CoalescedRow}. */
- @LetterTileDrawable.ContactType
- public static int getContactType(CoalescedRow row) {
- // TODO(zachh): Set these fields correctly.
- boolean isVoicemail = false;
- boolean isSpam = false;
- boolean isBusiness = false;
- int numberPresentation = row.numberPresentation();
- boolean isConference = false;
-
- return LetterTileDrawable.getContactTypeFromPrimitives(
- isVoicemail, isSpam, isBusiness, numberPresentation, isConference);
- }
-}
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java b/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java
index f4338ce7a..ccc9420c6 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemPrimaryActionInfo.java
@@ -49,7 +49,7 @@ public abstract class HistoryItemPrimaryActionInfo {
@Nullable
public abstract Intent intent();
- // TODO(zachh): Add SIM info here if should be shown in bottom sheet.
+ // TODO(a bug): Add SIM info.
/** Builder for {@link HistoryItemPrimaryActionInfo}. */
@AutoValue.Builder