summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRohit Yengisetty <rohit@cyngn.com>2016-01-12 22:49:33 -0800
committerRohit Yengisetty <rohit@cyngn.com>2016-01-12 22:49:33 -0800
commita08be421adf670c1bd941a5b7bbe18ecbdc523a6 (patch)
tree33c9058bae1433533b90716ddc61402be9640216
parent019f4673b8e3cc9d8b309e2e9a4655d287406544 (diff)
downloadpackages_apps_Contacts-a08be421adf670c1bd941a5b7bbe18ecbdc523a6.tar.gz
packages_apps_Contacts-a08be421adf670c1bd941a5b7bbe18ecbdc523a6.tar.bz2
packages_apps_Contacts-a08be421adf670c1bd941a5b7bbe18ecbdc523a6.zip
Add contact blocking and unblocking
Change-Id: I345122ee85158c7365948bb197599912376f1265
-rw-r--r--Android.mk4
-rw-r--r--AndroidManifest.xml3
-rw-r--r--res/menu/quickcontact.xml4
-rw-r--r--src/com/android/contacts/quickcontact/QuickContactActivity.java44
4 files changed, 53 insertions, 2 deletions
diff --git a/Android.mk b/Android.mk
index d5989b414..b9bcf90c3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -37,6 +37,10 @@ LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+# utilize ContactsCommon's phone-number-based contact-info lookup
+CONTACTS_COMMON_LOOKUP_PROVIDER ?= $(LOCAL_PATH)/$(contacts_common_dir)/info_lookup
+include $(CONTACTS_COMMON_LOOKUP_PROVIDER)/phonenumber_lookup_provider.mk
+
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 790b36c51..884fc3c57 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -45,6 +45,9 @@
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+ <!-- Blacklist -->
+ <uses-permission android:name="android.permission.READ_PHONE_BLACKLIST" />
+ <uses-permission android:name="android.permission.CHANGE_PHONE_BLACKLIST" />
<application
android:name="com.android.contacts.ContactsApplication"
diff --git a/res/menu/quickcontact.xml b/res/menu/quickcontact.xml
index c35d87638..ed9136172 100644
--- a/res/menu/quickcontact.xml
+++ b/res/menu/quickcontact.xml
@@ -57,4 +57,8 @@
<item
android:id="@+id/menu_help"
android:title="@string/menu_help" />
+
+ <item
+ android:id="@+id/menu_block_contact"
+ android:title="@string/menu_block_contact" />
</menu>
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 0f6309e01..db27e02b3 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -20,6 +20,7 @@ import android.accounts.Account;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.app.Activity;
+import android.app.DialogFragment;
import android.app.Fragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.app.SearchManager;
@@ -109,6 +110,7 @@ import com.android.contacts.common.GroupMetaData;
import com.android.contacts.common.activity.RequestPermissionsActivity;
import com.android.contacts.common.dialog.CallSubjectDialog;
import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.activity.fragment.BlockContactDialogFragment;
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.lettertiles.LetterTileDrawable;
import com.android.contacts.common.list.ShortcutIntentBuilder;
@@ -135,6 +137,7 @@ import com.android.contacts.common.model.dataitem.SipAddressDataItem;
import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
import com.android.contacts.common.model.dataitem.StructuredPostalDataItem;
import com.android.contacts.common.model.dataitem.WebsiteDataItem;
+import com.android.contacts.common.util.BlockContactHelper;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.SimContactsConstants;
@@ -167,6 +170,7 @@ import com.android.contacts.widget.MultiShrinkScroller.MultiShrinkScrollerListen
import com.android.contacts.widget.QuickContactImageView;
import com.android.contactsbind.HelpUtils;
+import com.cyanogen.lookup.phonenumber.provider.LookupProviderImpl;
import com.google.common.collect.Lists;
import com.google.common.collect.ImmutableList;
import com.squareup.picasso.Picasso;
@@ -188,7 +192,8 @@ import java.util.concurrent.ConcurrentHashMap;
* data asynchronously, and then shows a popup with details centered around
* {@link Intent#getSourceBounds()}.
*/
-public class QuickContactActivity extends ContactsActivity {
+public class QuickContactActivity extends ContactsActivity implements
+ BlockContactDialogFragment.BlockContactCallbacks {
/**
* QuickContacts immediately takes up the full screen. All possible information is shown.
@@ -277,6 +282,7 @@ public class QuickContactActivity extends ContactsActivity {
private final ImageViewDrawableSetter mPhotoSetter = new ImageViewDrawableSetter();
private Target mContactBitmapTarget;
+ private BlockContactHelper mBlockContactHelper;
/**
* {@link #LEADING_MIMETYPES} is used to sort MIME-types.
@@ -464,6 +470,16 @@ public class QuickContactActivity extends ContactsActivity {
}
};
+ @Override
+ public void onBlockContact(boolean notifyLookupProvider) {
+ mBlockContactHelper.blockContactAsync(notifyLookupProvider);
+ }
+
+ @Override
+ public void onUnblockContact(boolean notifyLookupProvider) {
+ mBlockContactHelper.unblockContactAsync(notifyLookupProvider);
+ }
+
private interface ContextMenuIds {
static final int COPY_TEXT = 0;
static final int CLEAR_DEFAULT = 1;
@@ -882,6 +898,11 @@ public class QuickContactActivity extends ContactsActivity {
});
}
processIntent(getIntent());
+ mBlockContactHelper = new BlockContactHelper(this, new LookupProviderImpl(this));
+ if (mContactData != null) {
+ mBlockContactHelper.setContactInfo(mContactData);
+ mBlockContactHelper.gatherDataInBackground();
+ }
Trace.endSection();
}
@@ -2281,7 +2302,8 @@ public class QuickContactActivity extends ContactsActivity {
finish();
return;
}
-
+ mBlockContactHelper.setContactInfo(data);
+ mBlockContactHelper.gatherDataInBackground();
bindContactData(data);
} finally {
@@ -2790,6 +2812,14 @@ public class QuickContactActivity extends ContactsActivity {
}
}
+ // set block or un-block menu titles accordingly
+ final MenuItem blockMenuItem = menu.findItem(R.id.menu_block_contact);
+ if (mBlockContactHelper.isContactBlacklisted()) {
+ blockMenuItem.setTitle(R.string.menu_unblock_contact);
+ } else {
+ blockMenuItem.setTitle(R.string.menu_block_contact);
+ }
+
return true;
}
return false;
@@ -2902,6 +2932,16 @@ public class QuickContactActivity extends ContactsActivity {
copyToCard(PhoneConstants.SUB2);
return true;
}
+ case R.id.menu_block_contact: {
+ // block contact dialog fragment
+ DialogFragment f = mBlockContactHelper.getBlockContactDialog(
+ mBlockContactHelper.isContactBlacklisted() ?
+ BlockContactHelper.BlockMode.UNBLOCK :
+ BlockContactHelper.BlockMode.BLOCK
+ );
+ f.show(getFragmentManager(), "block_contact");
+ return true;
+ }
default:
return super.onOptionsItemSelected(item);
}