summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/app/calllog
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2018-06-25 10:47:13 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-12-12 01:23:35 +0200
commitce6bc0e203c42529c1c48df398da102e99e3f2b0 (patch)
tree52f5fd9e5cea4b41c1c5f683da938ddc81191807 /java/com/android/dialer/app/calllog
parenta6593be278cc0f94387289f99607a050efe7878b (diff)
Allow per-call account selection.
Change-Id: Ieac27294f4069b2cff17bb39a0954f74320ad943
Diffstat (limited to 'java/com/android/dialer/app/calllog')
-rw-r--r--java/com/android/dialer/app/calllog/CallLogActivity.java7
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java18
-rw-r--r--java/com/android/dialer/app/calllog/IntentProvider.java36
3 files changed, 44 insertions, 17 deletions
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) {}
}