summaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authorGilles Franck Mevaa <gillesd@google.com>2016-01-04 12:25:36 -0800
committerGilles Franck Mevaa <gillesd@google.com>2016-01-19 15:01:58 -0800
commitebd3643240df89e0e9e3bb649ae7bd16cae912db (patch)
tree57f6270e7832bbf1ffeb2ae88c0de85e9aeb8613 /src/com/android
parentb2ad95ed00044fe436ecb3c27c3e0651a6fe9112 (diff)
New Spam-related options in call log entries.
This includes small UI additions to the call log UI; Mainly, two new buttons to mark each phone number entry as a Spam number or remove the phone number from the spam list. This also includes a service definition that will be needed to render the buttons or keep them hidden. Change-Id: I7cf22f6027728ebc0dfe9e3b5b923ee70bcaadd2
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViewHolder.java32
-rw-r--r--src/com/android/dialer/service/SpamButtonRenderer.java23
-rw-r--r--src/com/android/dialerbind/ObjectFactory.java10
3 files changed, 64 insertions, 1 deletions
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 21f3213a6..e5ee3bc38 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -55,10 +55,16 @@ import com.android.dialer.filterednumber.BlockNumberDialogFragment;
import com.android.dialer.filterednumber.FilteredNumbersUtil;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.service.SpamButtonRenderer;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PhoneNumberUtil;
import com.android.dialer.voicemail.VoicemailPlaybackLayout;
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;
/**
* This is an object containing references to views contained by the call log list item. This
@@ -198,6 +204,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
private final int mPhotoSize;
+ private ViewStub mSpamViewStub;
+ private SpamButtonRenderer mSpamButtonRenderer;
+
private View.OnClickListener mExpandCollapseListener;
private boolean mVoicemailPrimaryActionButtonClicked;
@@ -401,6 +410,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
callWithNoteButtonView.setOnClickListener(this);
+
+ mSpamViewStub = (ViewStub) actionsView.findViewById(R.id.spam_actions_container);
+ mSpamButtonRenderer = ObjectFactory.newSpamButtonRenderer(mContext, mSpamViewStub);
}
bindActionButtons();
@@ -499,7 +511,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
} else {
detailsButtonView.setVisibility(View.VISIBLE);
detailsButtonView.setTag(
- IntentProvider.getCallDetailIntentProvider(rowId, callIds, null));
+ IntentProvider.getCallDetailIntentProvider(rowId, callIds, null));
}
if (info != null && UriUtils.isEncodedContactUri(info.lookupUri)) {
@@ -530,6 +542,24 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
mCallLogCache.isVoicemailNumber(accountHandle, number);
callWithNoteButtonView.setVisibility(
supportsCallSubject && !isVoicemailNumber ? View.VISIBLE : View.GONE);
+
+ if(mSpamButtonRenderer != null){
+ List<View> completeLogListItems = Lists.newArrayList(
+ createNewContactButtonView,
+ addToExistingContactButtonView,
+ sendMessageView,
+ callButtonView,
+ callWithNoteButtonView,
+ detailsButtonView,
+ voicemailPlaybackView);
+ List<View> blockedNumberVisibleViews = new ArrayList<>();
+ List<View> spamNumberVisibleViews = Lists.newArrayList(detailsButtonView);
+
+ mSpamButtonRenderer.setCompleteListItemViews(completeLogListItems);
+ mSpamButtonRenderer.setFilteredNumberViews(blockedNumberVisibleViews);
+ mSpamButtonRenderer.setSpamFilteredViews(spamNumberVisibleViews);
+ mSpamButtonRenderer.render(number, countryIso);
+ }
}
/**
diff --git a/src/com/android/dialer/service/SpamButtonRenderer.java b/src/com/android/dialer/service/SpamButtonRenderer.java
new file mode 100644
index 000000000..843bc55d5
--- /dev/null
+++ b/src/com/android/dialer/service/SpamButtonRenderer.java
@@ -0,0 +1,23 @@
+package com.android.dialer.service;
+
+import android.view.View;
+
+import java.util.List;
+
+/**
+ * Interface responsible for rendering spam buttons.
+ */
+public interface SpamButtonRenderer {
+
+ /**
+ * Renders buttons for a phone number.
+ */
+ void render(String number, String countryIso);
+
+ void setCompleteListItemViews(List<View> views);
+
+ void setSpamFilteredViews(List<View> views);
+
+ void setFilteredNumberViews(List<View> views);
+
+}
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index f346a7e30..d06d55e86 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -19,12 +19,16 @@ package com.android.dialerbind;
import static com.android.dialer.calllog.CallLogAdapter.CallFetcher;
import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewStub;
import com.android.dialer.calllog.CallLogAdapter;
import com.android.dialer.calllog.ContactInfoHelper;
import com.android.dialer.list.RegularSearchFragment;
import com.android.dialer.logging.Logger;
import com.android.dialer.service.CachedNumberLookupService;
+import com.android.dialer.service.SpamButtonRenderer;
import com.android.dialer.voicemail.VoicemailPlaybackPresenter;
/**
@@ -41,6 +45,12 @@ public class ObjectFactory {
return "com.android.dialer.database.filterednumberprovider";
}
+ public static SpamButtonRenderer newSpamButtonRenderer(
+ Context context,
+ ViewStub stub) {
+ return null;
+ }
+
/**
* Create a new instance of the call log adapter.
* @param context The context to use.