diff options
author | Andrew Lee <anwlee@google.com> | 2015-03-18 17:10:56 -0700 |
---|---|---|
committer | Andrew Lee <anwlee@google.com> | 2015-03-19 12:58:21 -0700 |
commit | 87dc7309388941ec0017f3ff1aee329364dec484 (patch) | |
tree | 6d35c472a5da50a267396c027aa7d21a3f16619a | |
parent | 1e825d81a5c468cc754921e518538be55caa78fe (diff) |
Add shortcut for creating new contact with number.
Add a shortcut in the search fragment for "Create new contact" which
opens the compact editor with the entered phone number populated as
the main phone number.
Bug: 19372539
Change-Id: I9ccb462f399e3fab77c2d8ad536dbd0bd0e23609
5 files changed, 31 insertions, 8 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 07460ec4a..fb424e9be 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -502,6 +502,10 @@ <xliff:g id="number">%s</xliff:g> </string> + <!-- Shortcut item used to add a number directly to a new contact from search. + [CHAR LIMIT=40] --> + <string name="search_shortcut_create_new_contact">Create new contact</string> + <!-- Shortcut item used to add a number to an existing contact directly from search. [CHAR LIMIT=40] --> <string name="search_shortcut_add_to_existing_contact">Add to existing contact</string> diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java index 089937259..f5d8ee0bb 100644 --- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java +++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java @@ -27,11 +27,12 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { public final static int SHORTCUT_INVALID = -1; public final static int SHORTCUT_DIRECT_CALL = 0; - public final static int SHORTCUT_ADD_TO_EXISTING_CONTACT = 1; - public final static int SHORTCUT_SEND_SMS_MESSAGE = 2; - public final static int SHORTCUT_MAKE_VIDEO_CALL = 3; + public final static int SHORTCUT_CREATE_NEW_CONTACT = 1; + public final static int SHORTCUT_ADD_TO_EXISTING_CONTACT = 2; + public final static int SHORTCUT_SEND_SMS_MESSAGE = 3; + public final static int SHORTCUT_MAKE_VIDEO_CALL = 4; - public final static int SHORTCUT_COUNT = 4; + public final static int SHORTCUT_COUNT = 5; private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT]; @@ -143,6 +144,10 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { text = resources.getString(R.string.search_shortcut_call_number, number); drawableId = R.drawable.ic_search_phone; break; + case SHORTCUT_CREATE_NEW_CONTACT: + text = resources.getString(R.string.search_shortcut_create_new_contact); + drawableId = R.drawable.ic_search_add_contact; + break; case SHORTCUT_ADD_TO_EXISTING_CONTACT: text = resources.getString(R.string.search_shortcut_add_to_existing_contact); drawableId = R.drawable.ic_person_24dp; diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java index 87d4fd2c8..722dc2ed6 100644 --- a/src/com/android/dialer/list/RegularSearchListAdapter.java +++ b/src/com/android/dialer/list/RegularSearchListAdapter.java @@ -69,6 +69,7 @@ public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter { final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString()); boolean changed = false; changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL, showNumberShortcuts); + changed |= setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, showNumberShortcuts); changed |= setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, showNumberShortcuts); changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, showNumberShortcuts && CallUtil.isVideoEnabled(getContext())); diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java index e60936234..24ddc7351 100644 --- a/src/com/android/dialer/list/SearchFragment.java +++ b/src/com/android/dialer/list/SearchFragment.java @@ -20,6 +20,7 @@ import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; +import android.provider.ContactsContract; import android.text.TextUtils; import android.view.View; import android.view.animation.Interpolator; @@ -152,6 +153,8 @@ public class SearchFragment extends PhoneNumberPickerFragment { final DialerPhoneNumberListAdapter adapter = (DialerPhoneNumberListAdapter) getAdapter(); final int shortcutType = adapter.getShortcutTypeFromPosition(position); final OnPhoneNumberPickerActionListener listener; + final Intent intent; + final String number; switch (shortcutType) { case DialerPhoneNumberListAdapter.SHORTCUT_INVALID: @@ -163,17 +166,26 @@ public class SearchFragment extends PhoneNumberPickerFragment { listener.onCallNumberDirectly(getQueryString()); } break; + case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT: + number = TextUtils.isEmpty(mAddToContactNumber) ? + adapter.getFormattedQueryString() : mAddToContactNumber; + intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI); + intent.putExtra(ContactsContract.Intents.Insert.PHONE, number); + intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, + ContactsContract.CommonDataKinds.Phone.TYPE_MAIN); + DialerUtils.startActivityWithErrorToast(getActivity(), intent); + break; case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT: - final String number = TextUtils.isEmpty(mAddToContactNumber) ? + number = TextUtils.isEmpty(mAddToContactNumber) ? adapter.getFormattedQueryString() : mAddToContactNumber; - final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number); + intent = DialtactsActivity.getAddNumberToContactIntent(number); DialerUtils.startActivityWithErrorToast(getActivity(), intent, R.string.add_contact_not_available); break; case DialerPhoneNumberListAdapter.SHORTCUT_SEND_SMS_MESSAGE: - final Intent sendSmsIntent = new Intent( + intent = new Intent( Intent.ACTION_VIEW, Uri.parse(SMS_URI_PREFIX + getQueryString())); - DialerUtils.startActivityWithErrorToast(getActivity(), sendSmsIntent); + DialerUtils.startActivityWithErrorToast(getActivity(), intent); break; case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL: listener = getOnPhoneNumberPickerListener(); diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java index ed01baf2f..22ee92df2 100644 --- a/src/com/android/dialer/list/SmartDialNumberListAdapter.java +++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java @@ -116,6 +116,7 @@ public class SmartDialNumberListAdapter extends DialerPhoneNumberListAdapter { public void setQueryString(String queryString) { final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString()); boolean changed = false; + changed |= setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, showNumberShortcuts); changed |= setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, showNumberShortcuts); changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts); changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, |