summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-02-08 10:44:50 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-09 16:46:38 -0800
commit21b13e2975180744020b0fb8c150e4a74c45e30c (patch)
tree398fb87ed742538e427373e6928822ce1747387f /java/com/android/dialer/calllog
parentd4264575756e50c249ce26e8e12206aa3b4257a6 (diff)
Show icon and label for a spam number in the new call log.
Bug: 73077158 Test: CallLogEntryTextTest, GlidePhotoManagerImplTest, PhoneLookupInfoConsolidatorTest PiperOrigin-RevId: 185017362 Change-Id: I113472482da2213d17a847054272a22249edc578
Diffstat (limited to 'java/com/android/dialer/calllog')
-rw-r--r--java/com/android/dialer/calllog/database/contract/number_attributes.proto6
-rw-r--r--java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java1
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogAdapter.java7
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java38
-rw-r--r--java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java1
-rw-r--r--java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java9
-rw-r--r--java/com/android/dialer/calllog/ui/menu/PrimaryAction.java12
7 files changed, 40 insertions, 34 deletions
diff --git a/java/com/android/dialer/calllog/database/contract/number_attributes.proto b/java/com/android/dialer/calllog/database/contract/number_attributes.proto
index b1a756650..594e6764c 100644
--- a/java/com/android/dialer/calllog/database/contract/number_attributes.proto
+++ b/java/com/android/dialer/calllog/database/contract/number_attributes.proto
@@ -22,6 +22,7 @@ option optimize_for = LITE_RUNTIME;
package com.android.dialer;
// Information related to the phone number of the call.
+// Next ID: 12
message NumberAttributes {
// The name (which may be a person's name or business name, but not a number)
// formatted exactly as it should appear to the user. If the user's locale or
@@ -59,6 +60,9 @@ message NumberAttributes {
// display time.
optional bool is_cp2_info_incomplete = 9;
- // The number is blocked.
+ // Whether the number is blocked.
optional bool is_blocked = 10;
+
+ // Whether the number is spam.
+ optional bool is_spam = 11;
} \ No newline at end of file
diff --git a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
index 8fa6b67cc..52570c05e 100644
--- a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
@@ -586,6 +586,7 @@ public final class PhoneLookupDataSource
.setIsBusiness(phoneLookupInfoConsolidator.isBusiness())
.setIsVoicemail(phoneLookupInfoConsolidator.isVoicemail())
.setIsBlocked(phoneLookupInfoConsolidator.isBlocked())
+ .setIsSpam(phoneLookupInfoConsolidator.isSpam())
.setCanReportAsInvalidNumber(phoneLookupInfoConsolidator.canReportAsInvalidNumber())
.setIsCp2InfoIncomplete(phoneLookupInfoConsolidator.isCp2LocalInfoIncomplete())
.build()
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
index 05a339978..f7ba9efde 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
@@ -25,6 +25,8 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.dialer.calllogutils.CallLogDates;
import com.android.dialer.common.Assert;
+import com.android.dialer.glidephotomanager.GlidePhotoManager;
+import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
import com.android.dialer.time.Clock;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -53,6 +55,7 @@ final class NewCallLogAdapter extends RecyclerView.Adapter<ViewHolder> {
private final Clock clock;
private final RealtimeRowProcessor realtimeRowProcessor;
+ private final GlidePhotoManager glidePhotoManager;
private Cursor cursor;
@@ -69,6 +72,7 @@ final class NewCallLogAdapter extends RecyclerView.Adapter<ViewHolder> {
this.cursor = cursor;
this.clock = clock;
this.realtimeRowProcessor = CallLogUiComponent.get(context).realtimeRowProcessor();
+ this.glidePhotoManager = GlidePhotoManagerComponent.get(context).glidePhotoManager();
setHeaderPositions();
}
@@ -138,7 +142,8 @@ final class NewCallLogAdapter extends RecyclerView.Adapter<ViewHolder> {
LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.new_call_log_entry, viewGroup, false),
clock,
- realtimeRowProcessor);
+ realtimeRowProcessor,
+ glidePhotoManager);
default:
throw Assert.createUnsupportedOperationFailException("Unsupported view type: " + viewType);
}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index ee114b5f9..cf016083f 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -19,26 +19,22 @@ import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.database.Cursor;
-import android.net.Uri;
import android.provider.CallLog.Calls;
import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.calllog.ui.menu.NewCallLogMenu;
-import com.android.dialer.calllogutils.CallLogContactTypes;
import com.android.dialer.calllogutils.CallLogEntryText;
import com.android.dialer.calllogutils.CallLogIntents;
+import com.android.dialer.calllogutils.NumberAttributesConverter;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.compat.AppCompatConstants;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.NumberAttributeConverter;
+import com.android.dialer.glidephotomanager.GlidePhotoManager;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.time.Clock;
import com.google.common.util.concurrent.FutureCallback;
@@ -65,9 +61,15 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
private final RealtimeRowProcessor realtimeRowProcessor;
private final ExecutorService uiExecutorService;
+ private final GlidePhotoManager glidePhotoManager;
+
private int currentRowId;
- NewCallLogViewHolder(View view, Clock clock, RealtimeRowProcessor realtimeRowProcessor) {
+ NewCallLogViewHolder(
+ View view,
+ Clock clock,
+ RealtimeRowProcessor realtimeRowProcessor,
+ GlidePhotoManager glidePhotoManager) {
super(view);
this.context = view.getContext();
primaryTextView = view.findViewById(R.id.primary_text);
@@ -83,6 +85,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
this.clock = clock;
this.realtimeRowProcessor = realtimeRowProcessor;
+ this.glidePhotoManager = glidePhotoManager;
uiExecutorService = DialerExecutorComponent.get(context).uiExecutor();
}
@@ -147,19 +150,11 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
}
private void setPhoto(CoalescedRow row) {
- ContactPhotoManager.getInstance(context)
- .loadDialerThumbnailOrPhoto(
- quickContactBadge,
- parseUri(row.numberAttributes().getLookupUri()),
- row.numberAttributes().getPhotoId(),
- NumberAttributeConverter.getPhotoUri(context, row.numberAttributes()),
- CallLogEntryText.buildPrimaryText(context, row).toString(),
- CallLogContactTypes.getContactType(row));
- }
-
- @Nullable
- private static Uri parseUri(@Nullable String uri) {
- return TextUtils.isEmpty(uri) ? null : Uri.parse(uri);
+ glidePhotoManager.loadQuickContactBadge(
+ quickContactBadge,
+ NumberAttributesConverter.toPhotoInfoBuilder(row.numberAttributes())
+ .setFormattedNumber(row.formattedNumber())
+ .build());
}
private void setFeatureIcons(CoalescedRow row) {
@@ -254,7 +249,8 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
}
private void setOnClickListenerForMenuButon(CoalescedRow row) {
- menuButton.setOnClickListener(NewCallLogMenu.createOnClickListener(context, row));
+ menuButton.setOnClickListener(
+ NewCallLogMenu.createOnClickListener(context, row, glidePhotoManager));
}
private class RealtimeRowFutureCallback implements FutureCallback<CoalescedRow> {
diff --git a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
index 421c35f55..5083a95c5 100644
--- a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
+++ b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
@@ -212,6 +212,7 @@ public final class RealtimeRowProcessor {
.setIsBusiness(phoneLookupInfoConsolidator.isBusiness())
.setIsVoicemail(phoneLookupInfoConsolidator.isVoicemail())
.setIsBlocked(phoneLookupInfoConsolidator.isBlocked())
+ .setIsSpam(phoneLookupInfoConsolidator.isSpam())
.setCanReportAsInvalidNumber(phoneLookupInfoConsolidator.canReportAsInvalidNumber())
.build())
.build();
diff --git a/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java b/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
index 2ae823e7f..81c05135f 100644
--- a/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
+++ b/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
@@ -20,14 +20,19 @@ import android.content.Context;
import android.view.View;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.contactactions.ContactActionBottomSheet;
+import com.android.dialer.glidephotomanager.GlidePhotoManager;
/** Handles configuration of the bottom sheet menus for call log entries. */
public final class NewCallLogMenu {
/** Creates and returns the OnClickListener which opens the menu for the provided row. */
- public static View.OnClickListener createOnClickListener(Context context, CoalescedRow row) {
+ public static View.OnClickListener createOnClickListener(
+ Context context, CoalescedRow row, GlidePhotoManager glidePhotoManager) {
return (view) ->
ContactActionBottomSheet.show(
- context, PrimaryAction.fromRow(context, row), Modules.fromRow(context, row));
+ context,
+ PrimaryAction.fromRow(context, row),
+ Modules.fromRow(context, row),
+ glidePhotoManager);
}
}
diff --git a/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java b/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
index 2a43a3ca5..92a8453f4 100644
--- a/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
+++ b/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
@@ -19,12 +19,10 @@ package com.android.dialer.calllog.ui.menu;
import android.content.Context;
import android.provider.CallLog.Calls;
import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.calllogutils.CallLogContactTypes;
import com.android.dialer.calllogutils.CallLogEntryText;
import com.android.dialer.calllogutils.CallLogIntents;
+import com.android.dialer.calllogutils.NumberAttributesConverter;
import com.android.dialer.contactactions.ContactPrimaryActionInfo;
-import com.android.dialer.contactactions.ContactPrimaryActionInfo.PhotoInfo;
-import com.android.dialer.contactphoto.NumberAttributeConverter;
/** Configures the primary action row (top row) for the bottom sheet. */
final class PrimaryAction {
@@ -34,13 +32,9 @@ final class PrimaryAction {
return ContactPrimaryActionInfo.builder()
.setNumber(row.number())
.setPhotoInfo(
- PhotoInfo.builder()
- .setPhotoId(row.numberAttributes().getPhotoId())
- .setPhotoUri(NumberAttributeConverter.getPhotoUri(context, row.numberAttributes()))
- .setLookupUri(row.numberAttributes().getLookupUri())
+ NumberAttributesConverter.toPhotoInfoBuilder(row.numberAttributes())
+ .setFormattedNumber(row.formattedNumber())
.setIsVideo((row.features() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO)
- .setContactType(CallLogContactTypes.getContactType(row))
- .setDisplayName(primaryText.toString())
.build())
.setPrimaryText(primaryText)
.setSecondaryText(CallLogEntryText.buildSecondaryTextForBottomSheet(context, row))