From ce6bc0e203c42529c1c48df398da102e99e3f2b0 Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Mon, 25 Jun 2018 10:47:13 +0200 Subject: Allow per-call account selection. Change-Id: Ieac27294f4069b2cff17bb39a0954f74320ad943 --- .../dialer/app/calllog/CallLogActivity.java | 7 +++-- .../app/calllog/CallLogListItemViewHolder.java | 18 ++++++++++- .../android/dialer/app/calllog/IntentProvider.java | 36 ++++++++++++++-------- 3 files changed, 44 insertions(+), 17 deletions(-) (limited to 'java/com/android/dialer/app/calllog') diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java index fdfb3ab2a..f28aa0fc7 100644 --- a/java/com/android/dialer/app/calllog/CallLogActivity.java +++ b/java/com/android/dialer/app/calllog/CallLogActivity.java @@ -284,9 +284,10 @@ public class CallLogActivity extends TransactionSafeActivity && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) { String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER); Snackbar.make(findViewById(R.id.calllog_frame), getString(R.string.ec_data_deleted), 5_000) - .setAction( - R.string.view_conversation, - v -> startActivity(IntentProvider.getSendSmsIntentProvider(number).getIntent(this))) + .setAction(R.string.view_conversation, v -> { + IntentProvider provider = IntentProvider.getSendSmsIntentProvider(number); + startActivity(provider.getClickIntent(this)); + }) .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color)) .show(); } diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java index e044460c5..1d50a82ac 100644 --- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java +++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java @@ -106,6 +106,7 @@ import java.lang.ref.WeakReference; */ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, + View.OnLongClickListener, MenuItem.OnMenuItemClickListener, View.OnCreateContextMenuListener { @@ -306,6 +307,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder quickContactView.setOverlay(null); quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE); primaryActionButtonView.setOnClickListener(this); + primaryActionButtonView.setOnLongClickListener(this); primaryActionView.setOnClickListener(this.expandCollapseListener); if (this.voicemailPlaybackPresenter != null && ConfigProviderComponent.get(this.context) @@ -519,6 +521,7 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder primaryActionButtonView.setContentDescription( TextUtils.expandTemplate( context.getString(R.string.description_voicemail_action), validNameOrNumber)); + primaryActionButtonView.setTag(null); primaryActionButtonView.setVisibility(View.VISIBLE); } else { primaryActionButtonView.setVisibility(View.GONE); @@ -1053,7 +1056,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder return; } intentProvider.logInteraction(context); - final Intent intent = intentProvider.getIntent(context); + + final Intent intent = intentProvider.getClickIntent(context); // See IntentProvider.getCallDetailIntentProvider() for why this may be null. if (intent == null) { return; @@ -1073,6 +1077,18 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder } } + @Override + public boolean onLongClick(View view) { + final IntentProvider intentProvider = (IntentProvider) view.getTag(); + final Intent intent = intentProvider != null + ? intentProvider.getLongClickIntent(context) : null; + if (intent != null) { + DialerUtils.startActivityWithErrorToast(context, intent); + return true; + } + return false; + } + private static boolean isNonContactEntry(ContactInfo info) { if (info == null || info.sourceType != Type.SOURCE_TYPE_DIRECTORY) { return true; diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java index 21f341815..ed6d543d6 100644 --- a/java/com/android/dialer/app/calllog/IntentProvider.java +++ b/java/com/android/dialer/app/calllog/IntentProvider.java @@ -26,6 +26,7 @@ import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import com.android.contacts.common.model.Contact; import com.android.contacts.common.model.ContactLoader; +import com.android.dialer.app.AccountSelectionActivity; import com.android.dialer.calldetails.CallDetailsEntries; import com.android.dialer.calldetails.OldCallDetailsActivity; import com.android.dialer.callintent.CallInitiationType; @@ -55,12 +56,18 @@ public abstract class IntentProvider { final String number, final PhoneAccountHandle accountHandle) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return PreCall.getIntent( context, new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) .setPhoneAccountHandle(accountHandle)); } + + @Override + public Intent getLongClickIntent(Context context) { + return AccountSelectionActivity.createIntent(context, number, + CallInitiationType.Type.CALL_LOG); + } }; } @@ -68,12 +75,13 @@ public abstract class IntentProvider { final String number, final Context context, final TelephonyManager telephonyManager) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return PreCall.getIntent( context, new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) .setAllowAssistedDial(true)); } + }; } @@ -85,7 +93,7 @@ public abstract class IntentProvider { final String number, final PhoneAccountHandle accountHandle) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return PreCall.getIntent( context, new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) @@ -98,7 +106,7 @@ public abstract class IntentProvider { public static IntentProvider getDuoVideoIntentProvider(String number, boolean isNonContact) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return PreCall.getIntent( context, new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG) @@ -122,7 +130,7 @@ public abstract class IntentProvider { public static IntentProvider getInstallDuoIntentProvider() { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return DuoComponent.get(context).getDuo().getInstallDuoIntent().orNull(); } @@ -136,7 +144,7 @@ public abstract class IntentProvider { public static IntentProvider getSetUpDuoIntentProvider() { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return DuoComponent.get(context).getDuo().getActivateIntent().orNull(); } @@ -150,7 +158,7 @@ public abstract class IntentProvider { public static IntentProvider getDuoInviteIntentProvider(String number) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return DuoComponent.get(context).getDuo().getInviteIntent(number).orNull(); } @@ -165,7 +173,7 @@ public abstract class IntentProvider { @Nullable PhoneAccountHandle phoneAccountHandle) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return PreCall.getIntent( context, CallIntentBuilder.forVoicemail(phoneAccountHandle, CallInitiationType.Type.CALL_LOG)); @@ -176,7 +184,7 @@ public abstract class IntentProvider { public static IntentProvider getSendSmsIntentProvider(final String number) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return IntentUtil.getSendSmsIntent(number); } }; @@ -198,7 +206,7 @@ public abstract class IntentProvider { boolean canSupportAssistedDialing) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { return OldCallDetailsActivity.newInstance( context, callDetailsEntries, contact, canReportCallerId, canSupportAssistedDialing); } @@ -214,7 +222,7 @@ public abstract class IntentProvider { final boolean isNewContact) { return new IntentProvider() { @Override - public Intent getIntent(Context context) { + public Intent getClickIntent(Context context) { Contact contactToSave = null; if (lookupUri != null) { @@ -275,7 +283,9 @@ public abstract class IntentProvider { }; } - public abstract Intent getIntent(Context context); - + public abstract Intent getClickIntent(Context context); + public Intent getLongClickIntent(Context context) { + return null; + } public void logInteraction(Context context) {} } -- cgit v1.2.3