summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorAltaf-Mahdi <altaf.mahdi@gmail.com>2015-11-29 00:59:46 +0000
committerAltaf-Mahdi <altaf.mahdi@gmail.com>2015-11-29 21:18:24 +0000
commitb8d82235027f2c1c1040eab99e803b4e02b2c407 (patch)
tree5eb673d9471e38077d16e623ad46b7559aa05c54 /src/com
parent97d3cea6240e8496f9399ef881bbbed6cc4871a3 (diff)
downloadpackages_apps_Dialer-b8d82235027f2c1c1040eab99e803b4e02b2c407.tar.gz
packages_apps_Dialer-b8d82235027f2c1c1040eab99e803b4e02b2c407.tar.bz2
packages_apps_Dialer-b8d82235027f2c1c1040eab99e803b4e02b2c407.zip
Dialer: add block caller to call log list item
* add and remove number from blacklist * change the text and color if the number is blacklisted * remove the item if blacklist is disabled Change-Id: I2b737a7ebafd2515e5105d806fae9f40000ef40c
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViewHolder.java63
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java16
2 files changed, 78 insertions, 1 deletions
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 0fa5e6d33..bce73c41a 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -20,6 +20,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.content.Intent;
+import android.graphics.PorterDuff.Mode;
import android.net.Uri;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -34,8 +35,11 @@ import android.widget.QuickContactBadge;
import android.widget.ImageView;
import android.widget.TextView;
+import com.android.internal.telephony.util.BlacklistUtils;
+
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.util.UriUtils;
@@ -80,6 +84,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
public View sendMessageView;
public View detailsButtonView;
public View callWithNoteButtonView;
+ public View blockCallerButtonView;
+
+ private ContactInfoHelper mContactInfoHelper;
/**
* The row Id for the first call associated with the call log entry. Used as a key for the
@@ -192,7 +199,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
this.primaryActionButtonView = primaryActionButtonView;
Resources resources = mContext.getResources();
- mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
+ mPhotoSize = resources.getDimensionPixelSize(R.dimen.contact_photo_size);
// Set text height to false on the TextViews so they don't have extra padding.
phoneCallDetailsViews.nameView.setElegantTextHeight(false);
@@ -202,6 +209,9 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
primaryActionButtonView.setOnClickListener(this);
primaryActionView.setOnClickListener(mExpandCollapseListener);
+
+ mContactInfoHelper = new ContactInfoHelper(mContext,
+ GeoUtil.getCurrentCountryIso(mContext));
}
public static CallLogListItemViewHolder create(
@@ -263,6 +273,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
callWithNoteButtonView.setOnClickListener(this);
+
+ blockCallerButtonView = actionsView.findViewById(R.id.block_caller_action);
+ blockCallerButtonView.setOnClickListener(this);
+ updateBlockCallerView();
}
bindActionButtons();
@@ -374,6 +388,13 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
mTelecomCallLogCache.isVoicemailNumber(accountHandle, number);
callWithNoteButtonView.setVisibility(
supportsCallSubject && !isVoicemailNumber ? View.VISIBLE : View.GONE);
+
+ // Remove block caller item if blacklist is disabled
+ if (mContactInfoHelper.canBlacklistCalls()) {
+ blockCallerButtonView.setVisibility(View.VISIBLE);
+ } else {
+ blockCallerButtonView.setVisibility(View.GONE);
+ }
}
/**
@@ -461,6 +482,13 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
view in dialog. */
numberType, /* phone number type (e.g. mobile) in second line of contact view */
accountHandle);
+ } else if (view.getId() == R.id.block_caller_action) {
+ if (isBlackListed() != BlacklistUtils.MATCH_NONE) {
+ mContactInfoHelper.removeNumberFromBlacklist(number);
+ } else {
+ mContactInfoHelper.addNumberToBlacklist(number);
+ }
+ updateBlockCallerView();
} else {
final IntentProvider intentProvider = (IntentProvider) view.getTag();
if (intentProvider != null) {
@@ -496,7 +524,40 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
viewHolder.detailsButtonView = new TextView(context);
viewHolder.actionsView = new View(context);
viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
+ viewHolder.blockCallerButtonView = new TextView(context);
return viewHolder;
}
+
+ /**
+ * Update block caller text and image color
+ */
+ private void updateBlockCallerView() {
+ Resources res = mContext.getResources();
+ TextView blockCallerText =
+ (TextView) rootView.findViewById(R.id.block_caller_text);
+ ImageView blockCallerImage =
+ (ImageView) rootView.findViewById(R.id.block_caller_image);
+ if (isBlackListed() != BlacklistUtils.MATCH_NONE) {
+ blockCallerText.setText(R.string.call_log_action_unblock);
+ blockCallerText.setTextColor(res.getColor(
+ R.color.call_log_action_block_red));
+ blockCallerImage.setColorFilter(res.getColor(
+ R.color.call_log_action_block_red), Mode.SRC_ATOP);
+ } else {
+ blockCallerText.setText(R.string.call_log_action_block);
+ blockCallerText.setTextColor(res.getColor(
+ R.color.call_log_action_block_gray));
+ blockCallerImage.setColorFilter(res.getColor(
+ R.color.call_log_action_block_gray), Mode.SRC_ATOP);
+ }
+ }
+
+ /**
+ * Checks whether the number is blacklisted
+ */
+ public int isBlackListed() {
+ return BlacklistUtils.isListed(mContext,
+ number, BlacklistUtils.BLOCK_CALLS);
+ }
}
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 2ecf65f22..f28a6d17c 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -475,4 +475,20 @@ public class ContactInfoHelper {
}
}
+ /**
+ * Requests the given number to be removed from phone blacklist
+ *
+ * @param number the number to be removed from blacklist
+ */
+ public void removeNumberFromBlacklist(String number) {
+ Uri uri = Uri.withAppendedPath(Telephony.Blacklist.CONTENT_FILTER_BYNUMBER_URI, number);
+ int count = mContext.getContentResolver().delete(uri, null, null);
+
+ if (count != 0) {
+ // Give the user some feedback
+ String message = mContext.getString(R.string.toast_removed_from_blacklist, number);
+ Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
+ }
+ }
+
}