diff options
author | Rohit Yengisetty <rohit@cyngn.com> | 2016-01-12 22:49:33 -0800 |
---|---|---|
committer | Rohit Yengisetty <rohit@cyngn.com> | 2016-01-12 22:49:33 -0800 |
commit | a08be421adf670c1bd941a5b7bbe18ecbdc523a6 (patch) | |
tree | 33c9058bae1433533b90716ddc61402be9640216 | |
parent | 019f4673b8e3cc9d8b309e2e9a4655d287406544 (diff) | |
download | packages_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.mk | 4 | ||||
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | res/menu/quickcontact.xml | 4 | ||||
-rw-r--r-- | src/com/android/contacts/quickcontact/QuickContactActivity.java | 44 |
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); } |