diff options
author | NathanielWaggoner <nwaggoner@cyngn.com> | 2016-02-15 14:04:46 -0800 |
---|---|---|
committer | Richard MacGregor <rmacgregor@cyngn.com> | 2016-04-08 09:16:15 -0700 |
commit | c05de726bc59d7182590ce22399f9cb48afd2ca7 (patch) | |
tree | 2e313d54ee0b5ff527a720747559df06fe9e76cd | |
parent | 61d7ca70700a45baf0b7a92277a6ddd3337688e3 (diff) | |
download | android_packages_apps_InCallUI-c05de726bc59d7182590ce22399f9cb48afd2ca7.tar.gz android_packages_apps_InCallUI-c05de726bc59d7182590ce22399f9cb48afd2ca7.tar.bz2 android_packages_apps_InCallUI-c05de726bc59d7182590ce22399f9cb48afd2ca7.zip |
Resolves a few issues related to call buttons: The DeepLink slot will
now update after sending a link to be handled. onResume() will now start
a new query. This gives the handling application an opportunity to
trigger a "view" action instead of receiving the content as if it were
new.
Adds Caller information (the name) to the meta data shared in the
intent.
Change-Id: I2d76bb35445bfc590fb7e6e509660624ffb39241
-rw-r--r-- | res/values/cm_strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/incallui/CallButtonFragment.java | 4 | ||||
-rw-r--r-- | src/com/android/incallui/CallButtonPresenter.java | 44 |
3 files changed, 39 insertions, 11 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 7494bc25..3aabf132 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -59,4 +59,6 @@ <string name="caller_info_failure"><xliff:g id="provider">%s</xliff:g> could not be reached</string> <string name="caller_info_no_result">No <xliff:g id="provider">%s</xliff:g> match found</string> <string name="caller_info_unauthenticated"><xliff:g id="provider">%s</xliff:g> setup incomplete</string> + + <string name="call_button_contact_unknown">Unknown</string> </resources> diff --git a/src/com/android/incallui/CallButtonFragment.java b/src/com/android/incallui/CallButtonFragment.java index 88e92c35..9abbab65 100644 --- a/src/com/android/incallui/CallButtonFragment.java +++ b/src/com/android/incallui/CallButtonFragment.java @@ -209,6 +209,7 @@ public class CallButtonFragment public void onResume() { if (getPresenter() != null) { getPresenter().refreshMuteState(); + getPresenter().refreshDeepLinkState(); } super.onResume(); @@ -222,6 +223,7 @@ public class CallButtonFragment } public Drawable configureDeepLinkDrawable(Drawable drawable) { + drawable.mutate(); drawable.setTintList(getResources().getColorStateList(R.color.selectable_icon_tint)); drawable.setAutoMirrored(false); return drawable; @@ -286,7 +288,7 @@ public class CallButtonFragment getPresenter().transferCallClicked(); break; case R.id.takeNoteButton: - getPresenter().takeNote(); + getPresenter().handleNoteClick(); break; default: Log.wtf(this, "onClick: unexpected"); diff --git a/src/com/android/incallui/CallButtonPresenter.java b/src/com/android/incallui/CallButtonPresenter.java index 605da023..e7228956 100644 --- a/src/com/android/incallui/CallButtonPresenter.java +++ b/src/com/android/incallui/CallButtonPresenter.java @@ -84,7 +84,6 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto private static final String KEY_PREVIOUS_MUTE_STATE = "incall_key_previous_mute_state"; private static final String RECORDING_WARNING_PRESENTED = "recording_warning_presented"; private static final boolean DEBUG = false; - private static final String CALL_DISPLAY_NAME_UNKNOWN = "Unkown"; private Call mCall; private boolean mAutomaticallyMuted = false; private boolean mPreviousMuteState = false; @@ -692,6 +691,10 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto mAutomaticallyMuted = false; } + protected void refreshDeepLinkState() { + getPreferredLinks(mDeepLinkCallback); + } + private void contactUpdated() { if (DEBUG) Log.i(this, "contactUpdated"); if (getUi() != null && mCall != null) { @@ -778,16 +781,37 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto /** * Take a note triggered by the CallButtonFragment note button. */ - public void takeNote() { - if(mCall != null && mDeepLink != null) { - CallDeepLinkContent content = new CallDeepLinkContent(mDeepLink); - content.setName( - mCall.getCnapName() == null ? CALL_DISPLAY_NAME_UNKNOWN : mCall.getCnapName()); - content.setNumber(mCall.getNumber()); - content.setUri(DeepLinkIntegrationManager.generateCallUri(mCall.getNumber(), - mCall.getTelecommCall().getDetails().getCreateTimeMillis())); - getUi().getContext().startActivity(content.build()); + public void handleNoteClick() { + if(mCall != null) { + if(mDeepLink.getAlreadyHasContent()) { + getUi().getContext().startActivity(mDeepLink.createViewIntent()); + } else { + CallDeepLinkContent content = new CallDeepLinkContent(mDeepLink); + content.setName(getNameForCall()); + content.setNumber(mCall.getNumber()); + content.setUri(DeepLinkIntegrationManager.generateCallUri(mCall.getNumber(), + mCall.getTelecommCall().getDetails().getCreateTimeMillis())); + getUi().getContext().startActivity(content.build()); + } + } + } + + /** + * Gets the name to display for the call. + */ + private String getNameForCall() { + String toRet = getUi().getContext().getResources().getString(R.string + .call_button_contact_unknown); + final ContactInfoCache cache = ContactInfoCache.getInstance(getUi().getContext()); + if (cache != null && mCall != null) { + ContactCacheEntry contactInfo = cache.getInfo(mCall.getId()); + if(contactInfo != null) { + if (!TextUtils.isEmpty(contactInfo.name)) { + toRet = contactInfo.name; + } + } } + return toRet; } /** |