From fc1fed72d6adf5158be271646655056b14d1ccf2 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Wed, 2 Jul 2014 11:05:53 -0700 Subject: Add "Make video call" button to search fragments. = Add new "make video call" shortcut type, and "handle" its click in SearchFragment. = Enable "make video call" shortcut for regular and smart dial search fragments. For now, this shortcut does nothing. = Enable "add contact" shortcut for smart dial search fragment. = Changed the bounds of the shortcut items to fill to the edges. = Convert shortcut click handling to use switch/case block. = TODO: Enable/disable the shortcuts depending on whether video calling has been enabled, once the option is available. = TODO: Handle dispatching a video call intent, once that intent extra is provided. Bug: 16013180 Change-Id: I7563d1f2939e27c4b13ed966b73cd4badd9d9fa7 --- res/values/strings.xml | 3 ++ src/com/android/dialer/DialtactsActivity.java | 17 +++++++-- .../dialer/list/DialerPhoneNumberListAdapter.java | 8 ++++- .../dialer/list/RegularSearchListAdapter.java | 3 ++ src/com/android/dialer/list/SearchFragment.java | 40 ++++++++++++++-------- .../dialer/list/SmartDialNumberListAdapter.java | 11 ++++++ 6 files changed, 64 insertions(+), 18 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 517045946..2c3b13c10 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -592,6 +592,9 @@ Add to contacts + + Make video call + View full call history diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index 014ea7e77..414135178 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -1105,8 +1105,21 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onCallNumberDirectly(String phoneNumber) { - final PhoneAccount account = mAccountManager != null? - mAccountManager.getCurrentAccount(): null; + onCallNumberDirectly(phoneNumber, false /* isVideoCall */); + } + + @Override + public void onCallNumberDirectly(String phoneNumber, boolean isVideoCall) { + if (isVideoCall) { + //TODO: Dispatch intent with video call extras specified, then remove this toast. + Toast toast = Toast.makeText(getApplicationContext(), + "Feature development in progress.", Toast.LENGTH_SHORT); + toast.show(); + return; + } + + final PhoneAccount account = mAccountManager != null ? + mAccountManager.getCurrentAccount() : null; Intent intent = CallUtil.getCallIntent(phoneNumber, getCallOrigin(), account); DialerUtils.startActivityWithErrorToast(this, intent); mClearSearchOnPause = true; diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java index abceda407..9fb223903 100644 --- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java +++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java @@ -28,8 +28,9 @@ 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_NUMBER_TO_CONTACTS = 1; + public final static int SHORTCUT_MAKE_VIDEO_CALL = 2; - public final static int SHORTCUT_COUNT = 2; + public final static int SHORTCUT_COUNT = 3; private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT]; @@ -145,12 +146,17 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { text = resources.getString(R.string.search_shortcut_add_to_contacts); drawableId = R.drawable.ic_search_add_contact; break; + case SHORTCUT_MAKE_VIDEO_CALL: + text = resources.getString(R.string.search_shortcut_make_video_call); + drawableId = R.drawable.ic_videocam; + break; default: throw new IllegalArgumentException("Invalid shortcut type"); } v.setDrawableResource(R.drawable.search_shortcut_background, drawableId); v.setDisplayName(text); v.setPhotoPosition(super.getPhotoPosition()); + v.setAdjustSelectionBoundsEnabled(false); } public void setShortcutEnabled(int shortcutType, boolean visible) { diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java index d0617b7dc..2bceaf9ed 100644 --- a/src/com/android/dialer/list/RegularSearchListAdapter.java +++ b/src/com/android/dialer/list/RegularSearchListAdapter.java @@ -73,6 +73,9 @@ public class RegularSearchListAdapter extends DialerPhoneNumberListAdapter { // a dialable number, then clicking add to contact should add it as a number. // Otherwise, it should add it to a new contact as a name. setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts); + // TODO: Write utility method to check subscriptions and settings, and use it to determine + // whether to enable or disable video call shortcut. + setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, showNumberShortcuts); super.setQueryString(queryString); } } diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java index 03d22429c..e2cea418f 100644 --- a/src/com/android/dialer/list/SearchFragment.java +++ b/src/com/android/dialer/list/SearchFragment.java @@ -147,21 +147,31 @@ public class SearchFragment extends PhoneNumberPickerFragment { protected void onItemClick(int position, long id) { final DialerPhoneNumberListAdapter adapter = (DialerPhoneNumberListAdapter) getAdapter(); final int shortcutType = adapter.getShortcutTypeFromPosition(position); - - if (shortcutType == DialerPhoneNumberListAdapter.SHORTCUT_INVALID) { - super.onItemClick(position, id); - } else if (shortcutType == DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL) { - final OnPhoneNumberPickerActionListener listener = - getOnPhoneNumberPickerListener(); - if (listener != null) { - listener.onCallNumberDirectly(getQueryString()); - } - } else if (shortcutType == DialerPhoneNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS) { - final String number = TextUtils.isEmpty(mAddToContactNumber) ? - adapter.getFormattedQueryString() : mAddToContactNumber; - final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number); - DialerUtils.startActivityWithErrorToast(getActivity(), intent, - R.string.add_contact_not_available); + final OnPhoneNumberPickerActionListener listener; + + switch (shortcutType) { + case DialerPhoneNumberListAdapter.SHORTCUT_INVALID: + super.onItemClick(position, id); + break; + case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL: + listener = getOnPhoneNumberPickerListener(); + if (listener != null) { + listener.onCallNumberDirectly(getQueryString()); + } + break; + case DialerPhoneNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS: + final String number = TextUtils.isEmpty(mAddToContactNumber) ? + adapter.getFormattedQueryString() : mAddToContactNumber; + final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number); + DialerUtils.startActivityWithErrorToast(getActivity(), intent, + R.string.add_contact_not_available); + break; + case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL: + listener = getOnPhoneNumberPickerListener(); + if (listener != null) { + listener.onCallNumberDirectly(getQueryString(), true /* isVideoCall */); + } + break; } } diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java index 25d442e0c..d9aa84674 100644 --- a/src/com/android/dialer/list/SmartDialNumberListAdapter.java +++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java @@ -22,6 +22,7 @@ import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Callable; import android.telephony.PhoneNumberUtils; +import android.text.TextUtils; import android.util.Log; import com.android.contacts.common.list.ContactListItemView; @@ -112,4 +113,14 @@ public class SmartDialNumberListAdapter extends DialerPhoneNumberListAdapter { return null; } } + + @Override + public void setQueryString(String queryString) { + final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString()); + setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts); + // TODO: Write utility method to check subscriptions and settings, and use it to determine + // whether to enable or disable video call shortcut. + setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL, showNumberShortcuts); + super.setQueryString(queryString); + } } -- cgit v1.2.3