summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calldetails/CallDetailsActivity.java
diff options
context:
space:
mode:
authorerfanian <erfanian@google.com>2017-12-05 17:43:20 -0800
committerCopybara-Service <copybara-piper@google.com>2017-12-07 18:27:24 -0800
commit7772ec071f5ed2e2283e9a00215e8cf1fca9168a (patch)
tree3bb7d4eb7516f778a5b9ba91a40aa3c687041828 /java/com/android/dialer/calldetails/CallDetailsActivity.java
parent5194036b423d455a517d06b38fd616a8bbfc4896 (diff)
Add Assisted Dialing Call Details Implementation.
This includes all of the work specified in the UX layouts, with the exception of the parenthetical country code. Because the canonical mapping of dial prefixes to country codes is not contained in this package, some thought needs to be given on the best way to implement this part of the spec. This change also introduces a fallback error text, in case the client experiences bad data from the call log. Test: new unit tests PiperOrigin-RevId: 178038123 Change-Id: I88eec72a73820e092f24c5f53ee9520a42486ada
Diffstat (limited to 'java/com/android/dialer/calldetails/CallDetailsActivity.java')
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsActivity.java59
1 files changed, 51 insertions, 8 deletions
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index b51d833dc..c29f9e9ae 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -33,13 +33,20 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
+import android.view.View;
import android.widget.Toast;
+import com.android.dialer.DialerPhoneNumber;
+import com.android.dialer.assisteddialing.ui.AssistedDialingSettingActivity;
import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
+import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.duo.Duo;
@@ -51,10 +58,12 @@ import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.UiAction;
import com.android.dialer.performancereport.PerformanceReport;
+import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
import com.android.dialer.postcall.PostCall;
import com.android.dialer.precall.PreCall;
import com.android.dialer.protos.ProtoParsers;
import com.google.common.base.Preconditions;
+import com.google.i18n.phonenumbers.PhoneNumberUtil;
import java.lang.ref.WeakReference;
import java.util.Collections;
import java.util.List;
@@ -70,8 +79,8 @@ public class CallDetailsActivity extends AppCompatActivity {
public static final String EXTRA_CAN_REPORT_CALLER_ID = "can_report_caller_id";
private static final String EXTRA_CAN_SUPPORT_ASSISTED_DIALING = "can_support_assisted_dialing";
- private final CallDetailsHeaderViewHolder.CallbackActionListener callbackActionListener =
- new CallbackActionListener(this);
+ private final CallDetailsHeaderViewHolder.CallDetailsHeaderListener callDetailsHeaderListener =
+ new CallDetailsHeaderListener(this);
private final CallDetailsFooterViewHolder.DeleteCallDetailsListener deleteCallDetailsListener =
new DeleteCallDetailsListener(this);
private final CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener =
@@ -166,7 +175,7 @@ public class CallDetailsActivity extends AppCompatActivity {
this /* context */,
contact,
entries.getEntriesList(),
- callbackActionListener,
+ callDetailsHeaderListener,
reportCallIdListener,
deleteCallDetailsListener);
@@ -248,11 +257,11 @@ public class CallDetailsActivity extends AppCompatActivity {
}
}
- private static final class CallbackActionListener
- implements CallDetailsHeaderViewHolder.CallbackActionListener {
- private final WeakReference<Activity> activityWeakReference;
+ private static final class CallDetailsHeaderListener
+ implements CallDetailsHeaderViewHolder.CallDetailsHeaderListener {
+ private final WeakReference<CallDetailsActivity> activityWeakReference;
- CallbackActionListener(Activity activity) {
+ CallDetailsHeaderListener(CallDetailsActivity activity) {
this.activityWeakReference = new WeakReference<>(activity);
}
@@ -303,9 +312,43 @@ public class CallDetailsActivity extends AppCompatActivity {
PreCall.start(getActivity(), callIntentBuilder);
}
- private Activity getActivity() {
+ private CallDetailsActivity getActivity() {
return Preconditions.checkNotNull(activityWeakReference.get());
}
+
+ @Override
+ public void openAssistedDialingSettings(View unused) {
+ Intent intent = new Intent(getActivity(), AssistedDialingSettingActivity.class);
+ getActivity().startActivity(intent);
+ }
+
+ @Override
+ public void createAssistedDialerNumberParserTask(
+ AssistedDialingNumberParseWorker worker,
+ SuccessListener<Integer> successListener,
+ FailureListener failureListener) {
+ DialerExecutorComponent.get(getActivity().getApplicationContext())
+ .dialerExecutorFactory()
+ .createUiTaskBuilder(
+ getActivity().getFragmentManager(),
+ "CallDetailsActivity.createAssistedDialerNumberParserTask",
+ new AssistedDialingNumberParseWorker())
+ .onSuccess(successListener)
+ .onFailure(failureListener)
+ .build()
+ .executeParallel(getActivity().contact.getNumber());
+ }
+ }
+
+ static class AssistedDialingNumberParseWorker implements Worker<String, Integer> {
+
+ @Override
+ public Integer doInBackground(@NonNull String phoneNumber) {
+ DialerPhoneNumberUtil dialerPhoneNumberUtil =
+ new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance());
+ DialerPhoneNumber parsedNumber = dialerPhoneNumberUtil.parse(phoneNumber, null);
+ return parsedNumber.getDialerInternalPhoneNumber().getCountryCode();
+ }
}
private static final class DeleteCallDetailsListener