summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/calllog
diff options
context:
space:
mode:
authorGilles Franck Mevaa <gillesd@google.com>2016-02-16 14:10:03 -0800
committerGilles Franck Mevaa <gillesd@google.com>2016-02-16 18:00:17 -0800
commit4a4b6dbc742b00ecdd0e3b970d8a1754ee960b43 (patch)
treee4d741cefb3f1e304171c5b294080f9f66260b18 /src/com/android/dialer/calllog
parent7a95f24a60fea68400b12f97d19ed0ac6df88990 (diff)
Listener of spam events
Getting rid of the Manager to have the ButtonRenderer directly communicate changes to an event listener. Implementation changes in ag/863096. Change-Id: Ie67de81bfc6fe8c3dd6812c35685d4709be7f133
Diffstat (limited to 'src/com/android/dialer/calllog')
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java28
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViewHolder.java54
2 files changed, 66 insertions, 16 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index aa97f7dac..7c2e80df1 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -35,6 +35,8 @@ import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.AccessibilityDelegate;
@@ -54,18 +56,20 @@ import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.filterednumber.BlockNumberDialogFragment.Callback;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
+import com.android.dialer.service.ExtendedBlockingButtonRenderer;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
-import com.android.incallui.CallerInfo;
import java.util.HashMap;
+import java.util.Map;
/**
* Adapter class to fill in data for the Call Log.
*/
public class CallLogAdapter extends GroupingListAdapter
implements CallLogGroupBuilder.GroupCreator,
- VoicemailPlaybackPresenter.OnVoicemailDeletedListener {
+ VoicemailPlaybackPresenter.OnVoicemailDeletedListener,
+ ExtendedBlockingButtonRenderer.Listener {
/** Interface used to initiate a refresh of the content. */
public interface CallFetcher {
@@ -93,6 +97,7 @@ public class CallLogAdapter extends GroupingListAdapter
protected final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
private final CallFetcher mCallFetcher;
private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+ private final Map<String, Boolean> mBlockedNumberCache = new ArrayMap<>();
protected ContactInfoCache mContactInfoCache;
@@ -296,6 +301,24 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
+ @Override
+ public void onBlockedNumber(String number,String countryIso) {
+ String cacheKey = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ if (!TextUtils.isEmpty(cacheKey)) {
+ mBlockedNumberCache.put(cacheKey, true);
+ notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onUnblockedNumber( String number, String countryIso) {
+ String cacheKey = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ if (!TextUtils.isEmpty(cacheKey)) {
+ mBlockedNumberCache.put(cacheKey, false);
+ notifyDataSetChanged();
+ }
+ }
+
/**
* Requery on background thread when {@link Cursor} changes.
*/
@@ -367,6 +390,7 @@ public class CallLogAdapter extends GroupingListAdapter
CallLogListItemViewHolder viewHolder = CallLogListItemViewHolder.create(
view,
mContext,
+ this,
mExpandCollapseListener,
mCallLogCache,
mCallLogListItemHelper,
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index e60dd2728..cfc937547 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -27,9 +27,11 @@ 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;
@@ -63,8 +65,9 @@ import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
import com.android.dialerbind.ObjectFactory;
import com.google.common.collect.Lists;
-import java.util.ArrayList;
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
@@ -74,7 +77,7 @@ import java.util.List;
*/
public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener, MenuItem.OnMenuItemClickListener,
- View.OnCreateContextMenuListener {
+ View.OnCreateContextMenuListener {
/** The root view of the call log list item */
public final View rootView;
@@ -196,23 +199,29 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
*/
public ContactInfo info;
+ /**
+ * Whether the current log entry is a blocked number or not. Used in updatePhoto()
+ */
+ public boolean isBlocked;
+
private final Context mContext;
private final CallLogCache mCallLogCache;
private final CallLogListItemHelper mCallLogListItemHelper;
private final VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+
private final BlockNumberDialogFragment.Callback mFilteredNumberDialogCallback;
private final int mPhotoSize;
-
private ViewStub mExtendedBlockingViewStub;
- private ExtendedBlockingButtonRenderer mExtendedBlockingButtonRenderer;
+ private final ExtendedBlockingButtonRenderer mExtendedBlockingButtonRenderer;
private View.OnClickListener mExpandCollapseListener;
private boolean mVoicemailPrimaryActionButtonClicked;
private CallLogListItemViewHolder(
Context context,
+ ExtendedBlockingButtonRenderer.Listener eventListener,
View.OnClickListener expandCollapseListener,
CallLogCache callLogCache,
CallLogListItemHelper callLogListItemHelper,
@@ -244,7 +253,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
this.dayGroupHeader = dayGroupHeader;
this.primaryActionButtonView = primaryActionButtonView;
this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
-
Resources resources = mContext.getResources();
mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
@@ -259,20 +267,23 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
primaryActionButtonView.setOnClickListener(this);
primaryActionView.setOnClickListener(mExpandCollapseListener);
primaryActionView.setOnCreateContextMenuListener(this);
+ mExtendedBlockingButtonRenderer =
+ ObjectFactory.newExtendedBlockingButtonRenderer(mContext, eventListener);
}
public static CallLogListItemViewHolder create(
View view,
Context context,
+ ExtendedBlockingButtonRenderer.Listener eventListener,
View.OnClickListener expandCollapseListener,
CallLogCache callLogCache,
CallLogListItemHelper callLogListItemHelper,
VoicemailPlaybackPresenter voicemailPlaybackPresenter,
FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
BlockNumberDialogFragment.Callback filteredNumberDialogCallback) {
-
return new CallLogListItemViewHolder(
context,
+ eventListener,
expandCollapseListener,
callLogCache,
callLogListItemHelper,
@@ -415,8 +426,6 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
mExtendedBlockingViewStub =
(ViewStub) actionsView.findViewById(R.id.extended_blocking_actions_container);
- mExtendedBlockingButtonRenderer = ObjectFactory
- .newExtendedBlockingButtonRenderer(mContext, mExtendedBlockingViewStub);
}
bindActionButtons();
@@ -556,13 +565,22 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callWithNoteButtonView,
detailsButtonView,
voicemailPlaybackView);
- List<View> blockedNumberVisibleViews = new ArrayList<>();
+
+ List<View> blockedNumberVisibleViews = Lists.newArrayList(detailsButtonView);
List<View> extendedBlockingVisibleViews = Lists.newArrayList(detailsButtonView);
- mExtendedBlockingButtonRenderer.setCompleteListItemViews(completeLogListItems);
- mExtendedBlockingButtonRenderer.setFilteredNumberViews(blockedNumberVisibleViews);
- mExtendedBlockingButtonRenderer.setExtendedFilteredViews(extendedBlockingVisibleViews);
- mExtendedBlockingButtonRenderer.render(number, countryIso);
+ ExtendedBlockingButtonRenderer.ViewHolderInfo viewHolderInfo =
+ new ExtendedBlockingButtonRenderer.ViewHolderInfo(
+ completeLogListItems,
+ extendedBlockingVisibleViews,
+ blockedNumberVisibleViews,
+ number,
+ countryIso,
+ nameOrNumber.toString(),
+ displayNumber);
+ mExtendedBlockingButtonRenderer.setViewHolderInfo(viewHolderInfo);
+
+ mExtendedBlockingButtonRenderer.render(mExtendedBlockingViewStub);
}
}
@@ -607,6 +625,13 @@ 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) {
@@ -670,6 +695,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
CallLogListItemViewHolder viewHolder = new CallLogListItemViewHolder(
context,
+ null,
null /* expandCollapseListener */,
callLogCache,
new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache),
@@ -689,4 +715,4 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return viewHolder;
}
-}
+} \ No newline at end of file