summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java46
-rw-r--r--java/com/android/dialer/calllogutils/CallLogRowActions.java (renamed from java/com/android/dialer/calllogutils/CallLogIntents.java)30
-rw-r--r--java/com/android/dialer/precall/impl/PreCallImpl.java18
-rw-r--r--java/com/android/dialer/precall/impl/PreCallModule.java18
4 files changed, 58 insertions, 54 deletions
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 796ffe515..44a08c75e 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -15,8 +15,7 @@
*/
package com.android.dialer.calllog.ui;
-import android.content.Context;
-import android.content.Intent;
+import android.app.Activity;
import android.content.res.ColorStateList;
import android.database.Cursor;
import android.provider.CallLog.Calls;
@@ -34,13 +33,14 @@ import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.calllog.ui.NewCallLogAdapter.PopCounts;
import com.android.dialer.calllog.ui.menu.NewCallLogMenu;
import com.android.dialer.calllogutils.CallLogEntryText;
-import com.android.dialer.calllogutils.CallLogIntents;
+import com.android.dialer.calllogutils.CallLogRowActions;
import com.android.dialer.calllogutils.NumberAttributesConverter;
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.compat.AppCompatConstants;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.oem.MotorolaUtils;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.time.Clock;
import com.android.dialer.widget.ContactPhotoView;
@@ -52,7 +52,7 @@ import java.util.concurrent.ExecutorService;
/** {@link RecyclerView.ViewHolder} for the new call log. */
final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
- private final Context context;
+ private final Activity activity;
private final ContactPhotoView contactPhotoView;
private final TextView primaryTextView;
private final TextView callCountTextView;
@@ -74,7 +74,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
NewCallLogViewHolder(
View view, Clock clock, RealtimeRowProcessor realtimeRowProcessor, PopCounts popCounts) {
super(view);
- this.context = view.getContext();
+ this.activity = (Activity) view.getContext();
contactPhotoView = view.findViewById(R.id.contact_photo_view);
primaryTextView = view.findViewById(R.id.primary_text);
callCountTextView = view.findViewById(R.id.call_count);
@@ -89,7 +89,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
this.clock = clock;
this.realtimeRowProcessor = realtimeRowProcessor;
this.popCounts = popCounts;
- uiExecutorService = DialerExecutorComponent.get(context).uiExecutor();
+ uiExecutorService = DialerExecutorComponent.get(activity).uiExecutor();
}
/** @param cursor a cursor from {@link CoalescedAnnotatedCallLogCursorLoader}. */
@@ -112,8 +112,8 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
private void displayRow(CoalescedRow row) {
// TODO(zachh): Handle RTL properly.
- primaryTextView.setText(CallLogEntryText.buildPrimaryText(context, row));
- secondaryTextView.setText(CallLogEntryText.buildSecondaryTextForEntries(context, clock, row));
+ primaryTextView.setText(CallLogEntryText.buildPrimaryText(activity, row));
+ secondaryTextView.setText(CallLogEntryText.buildSecondaryTextForEntries(activity, clock, row));
if (isUnreadMissedCall(row)) {
primaryTextView.setTextAppearance(R.style.primary_textview_unread_call);
@@ -168,7 +168,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
private void setFeatureIcons(CoalescedRow row) {
ColorStateList colorStateList =
ColorStateList.valueOf(
- context.getColor(
+ activity.getColor(
isUnreadMissedCall(row)
? R.color.feature_icon_unread_color
: R.color.feature_icon_read_color));
@@ -182,7 +182,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
}
// Handle Wifi Icon
- if (MotorolaUtils.shouldShowWifiIconInCallLog(context, row.getFeatures())) {
+ if (MotorolaUtils.shouldShowWifiIconInCallLog(activity, row.getFeatures())) {
wifiIcon.setVisibility(View.VISIBLE);
wifiIcon.setImageTintList(colorStateList);
} else {
@@ -229,10 +229,10 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
if (isUnreadMissedCall(row)) {
callTypeIcon.setImageTintList(
- ColorStateList.valueOf(context.getColor(R.color.call_type_icon_unread_color)));
+ ColorStateList.valueOf(activity.getColor(R.color.call_type_icon_unread_color)));
} else {
callTypeIcon.setImageTintList(
- ColorStateList.valueOf(context.getColor(R.color.call_type_icon_read_color)));
+ ColorStateList.valueOf(activity.getColor(R.color.call_type_icon_read_color)));
}
}
@@ -245,17 +245,19 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
return;
}
- String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(context, phoneAccountHandle);
+ String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(activity, phoneAccountHandle);
if (TextUtils.isEmpty(phoneAccountLabel)) {
phoneAccountView.setVisibility(View.GONE);
return;
}
@ColorInt
- int phoneAccountColor = PhoneAccountUtils.getAccountColor(context, phoneAccountHandle);
+ int phoneAccountColor = PhoneAccountUtils.getAccountColor(activity, phoneAccountHandle);
if (phoneAccountColor == PhoneAccount.NO_HIGHLIGHT_COLOR) {
phoneAccountColor =
- context.getResources().getColor(R.color.dialer_secondary_text_color, context.getTheme());
+ activity
+ .getResources()
+ .getColor(R.color.dialer_secondary_text_color, activity.getTheme());
}
phoneAccountView.setText(phoneAccountLabel);
@@ -264,17 +266,15 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
}
private void setOnClickListenerForRow(CoalescedRow row) {
- itemView.setOnClickListener(
- (view) -> {
- Intent callbackIntent = CallLogIntents.getCallBackIntent(context, row);
- if (callbackIntent != null) {
- context.startActivity(callbackIntent);
- }
- });
+ if (!PhoneNumberHelper.canPlaceCallsTo(
+ row.getNumber().getNormalizedNumber(), row.getNumberPresentation())) {
+ return;
+ }
+ itemView.setOnClickListener(view -> CallLogRowActions.startCallForRow(activity, row));
}
private void setOnClickListenerForMenuButon(CoalescedRow row) {
- menuButton.setOnClickListener(NewCallLogMenu.createOnClickListener(context, row));
+ menuButton.setOnClickListener(NewCallLogMenu.createOnClickListener(activity, row));
}
private class RealtimeRowFutureCallback implements FutureCallback<CoalescedRow> {
diff --git a/java/com/android/dialer/calllogutils/CallLogIntents.java b/java/com/android/dialer/calllogutils/CallLogRowActions.java
index 18927f77d..2090fc32f 100644
--- a/java/com/android/dialer/calllogutils/CallLogIntents.java
+++ b/java/com/android/dialer/calllogutils/CallLogRowActions.java
@@ -15,39 +15,29 @@
*/
package com.android.dialer.calllogutils;
-import android.content.Context;
-import android.content.Intent;
+import android.app.Activity;
import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.precall.PreCall;
import com.android.dialer.telecom.TelecomUtil;
-/** Provides intents related to call log entries. */
-public final class CallLogIntents {
+/** Actions which can be performed on a call log row. */
+public final class CallLogRowActions {
/**
- * Returns an intent which can be used to call back for the provided row.
+ * Places a call to the number in the provided {@link CoalescedRow}.
*
* <p>If the call was a video call, a video call will be placed, and if the call was an audio
- * call, an audio call will be placed.
- *
- * @return null if the provided {@code row} doesn't have a number
+ * call, an audio call will be placed. The phone account corresponding to the row is used.
*/
- @Nullable
- public static Intent getCallBackIntent(Context context, CoalescedRow row) {
- String normalizedNumber = row.getNumber().getNormalizedNumber();
- if (!PhoneNumberHelper.canPlaceCallsTo(normalizedNumber, row.getNumberPresentation())) {
- return null;
- }
-
+ public static void startCallForRow(Activity activity, CoalescedRow row) {
// TODO(zachh): More granular logging?
- return PreCall.getIntent(
- context,
- new CallIntentBuilder(normalizedNumber, CallInitiationType.Type.CALL_LOG)
+ PreCall.start(
+ activity,
+ new CallIntentBuilder(
+ row.getNumber().getNormalizedNumber(), CallInitiationType.Type.CALL_LOG)
.setPhoneAccountHandle(
TelecomUtil.composePhoneAccountHandle(
row.getPhoneAccountComponentName(), row.getPhoneAccountId()))
diff --git a/java/com/android/dialer/precall/impl/PreCallImpl.java b/java/com/android/dialer/precall/impl/PreCallImpl.java
index bd23f9ece..2f9b2784c 100644
--- a/java/com/android/dialer/precall/impl/PreCallImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallImpl.java
@@ -25,7 +25,6 @@ import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.precall.PreCall;
import com.android.dialer.precall.PreCallAction;
-import com.android.dialer.precall.PreCallComponent;
import com.android.dialer.precall.PreCallCoordinator;
import com.google.common.collect.ImmutableList;
import javax.inject.Inject;
@@ -33,17 +32,16 @@ import javax.inject.Inject;
/** Implementation of {@link PreCall} */
public class PreCallImpl implements PreCall {
+ private final ImmutableList<PreCallAction> actions;
+
@Inject
- PreCallImpl() {}
+ PreCallImpl(ImmutableList<PreCallAction> actions) {
+ this.actions = actions;
+ }
@Override
public ImmutableList<PreCallAction> getActions() {
- return ImmutableList.of(
- new PermissionCheckAction(),
- new MalformedNumberRectifier(
- ImmutableList.of(new UkRegionPrefixInInternationalFormatHandler())),
- new CallingAccountSelector(),
- new AssistedDialAction());
+ return actions;
}
@NonNull
@@ -52,7 +50,7 @@ public class PreCallImpl implements PreCall {
Logger.get(context).logImpression(DialerImpression.Type.PRECALL_INITIATED);
if (!requiresUi(context, builder)) {
LogUtil.i("PreCallImpl.buildIntent", "No UI requested, running pre-call directly");
- for (PreCallAction action : PreCallComponent.get(context).getPreCall().getActions()) {
+ for (PreCallAction action : actions) {
action.runWithoutUi(context, builder);
}
return builder.build();
@@ -64,7 +62,7 @@ public class PreCallImpl implements PreCall {
}
private boolean requiresUi(Context context, CallIntentBuilder builder) {
- for (PreCallAction action : PreCallComponent.get(context).getPreCall().getActions()) {
+ for (PreCallAction action : actions) {
if (action.requiresUi(context, builder)) {
LogUtil.i("PreCallImpl.requiresUi", action + " requested UI");
return true;
diff --git a/java/com/android/dialer/precall/impl/PreCallModule.java b/java/com/android/dialer/precall/impl/PreCallModule.java
index 608cd5a8f..4643b1976 100644
--- a/java/com/android/dialer/precall/impl/PreCallModule.java
+++ b/java/com/android/dialer/precall/impl/PreCallModule.java
@@ -17,15 +17,31 @@
package com.android.dialer.precall.impl;
import com.android.dialer.precall.PreCall;
+import com.android.dialer.precall.PreCallAction;
+import com.google.common.collect.ImmutableList;
import dagger.Binds;
import dagger.Module;
+import dagger.Provides;
import javax.inject.Singleton;
/** Dagger module for {@link PreCall}. */
@Module
public abstract class PreCallModule {
+ private PreCallModule() {}
+
@Binds
@Singleton
- public abstract PreCall bindPreCall(PreCallImpl simulator);
+ public abstract PreCall to(PreCallImpl impl);
+
+ @Provides
+ @Singleton
+ public static ImmutableList<PreCallAction> provideActions() {
+ return ImmutableList.of(
+ new PermissionCheckAction(),
+ new MalformedNumberRectifier(
+ ImmutableList.of(new UkRegionPrefixInInternationalFormatHandler())),
+ new CallingAccountSelector(),
+ new AssistedDialAction());
+ }
}