From 9228d4a260961807329cc9187d21ab35ae2c097e Mon Sep 17 00:00:00 2001 From: Gilles Franck Mevaa Date: Wed, 2 Mar 2016 12:08:03 -0800 Subject: CallLogListItemViewHolder distinguishes block/spam numbers A new method is added to show the appropriate photo and label if the number is either blocked or spam. This occurs after the normal photo and labels are rendered. Because of that, there is a flickering if the photo and labels should be changed. b/27295728 will help track the fix of the flickering bug. Change-Id: I639c0c0d4167b48956892f2b955d4e1f0cc8e8eb --- .../dialer/calllog/CallLogListItemViewHolder.java | 19 ++++++++----------- .../service/ExtendedBlockingButtonRenderer.java | 13 +++++++++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java index 1c2744073..6c252758a 100644 --- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java +++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java @@ -27,11 +27,9 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import android.telecom.PhoneAccountHandle; -import android.telephony.PhoneNumberUtils; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; -import android.util.Log; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; @@ -66,8 +64,6 @@ import com.android.dialerbind.ObjectFactory; import com.google.common.collect.Lists; import java.util.List; -import java.util.Map; -import java.util.Set; /** * This is an object containing references to views contained by the call log list item. This @@ -625,13 +621,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder public void updatePhoto() { quickContactView.assignContactUri(info.lookupUri); - if (isBlocked && !TextUtils.isEmpty(number) /* maybe a private number ? */) { - quickContactView.setImageDrawable(mContext.getDrawable(R.drawable.blocked_contact)); - phoneCallDetailsViews.callLocationAndDate.setText( - mContext.getString(R.string.blocked_number_call_log_label)); - return; - } - final boolean isVoicemail = mCallLogCache.isVoicemailNumber(accountHandle, number); int contactType = ContactPhotoManager.TYPE_DEFAULT; if (isVoicemail) { @@ -653,6 +642,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder ContactPhotoManager.getInstance(mContext).loadThumbnail(quickContactView, info.photoId, false /* darkTheme */, true /* isCircular */, request); } + + if (mExtendedBlockingButtonRenderer != null) { + mExtendedBlockingButtonRenderer.updatePhotoAndLabelIfNecessary( + number, + countryIso, + quickContactView, + phoneCallDetailsViews.callLocationAndDate); + } } @Override diff --git a/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java b/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java index 5ff373288..f8d5ea048 100644 --- a/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java +++ b/src/com/android/dialer/service/ExtendedBlockingButtonRenderer.java @@ -19,6 +19,8 @@ package com.android.dialer.service; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewStub; +import android.widget.QuickContactBadge; +import android.widget.TextView; import java.util.List; @@ -70,4 +72,15 @@ public interface ExtendedBlockingButtonRenderer { void render(ViewStub viewStub); void setViewHolderInfo(ViewHolderInfo info); + + /** + * Updates the photo and label for the given phone number and country iso. + * + * @param number Phone number for which the rendering occurs. + * @param countryIso Two-letter country code. + * @param badge {@link QuickContactBadge} in which the photo should be rendered. + * @param view Textview that will hold the new label. + */ + void updatePhotoAndLabelIfNecessary( + String number, String countryIso, QuickContactBadge badge, TextView view); } -- cgit v1.2.3