summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calldetails/CallDetailsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/calldetails/CallDetailsActivity.java')
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsActivity.java77
1 files changed, 69 insertions, 8 deletions
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 7eab951fa..411006c46 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -29,32 +29,49 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
import android.view.MenuItem;
-import com.android.dialer.callcomposer.CallComposerContact;
import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+import com.android.dialer.dialercontact.DialerContact;
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.postcall.PostCall;
import com.android.dialer.protos.ProtoParsers;
import java.util.List;
/** Displays the details of a specific call log entry. */
-public class CallDetailsActivity extends AppCompatActivity implements OnMenuItemClickListener {
+public class CallDetailsActivity extends AppCompatActivity
+ implements OnMenuItemClickListener, CallDetailsFooterViewHolder.ReportCallIdListener {
+ public static final String EXTRA_PHONE_NUMBER = "phone_number";
+ public static final String EXTRA_HAS_ENRICHED_CALL_DATA = "has_enriched_call_data";
private static final String EXTRA_CALL_DETAILS_ENTRIES = "call_details_entries";
private static final String EXTRA_CONTACT = "contact";
+ private static final String EXTRA_CAN_REPORT_CALLER_ID = "can_report_caller_id";
private static final String TASK_DELETE = "task_delete";
private List<CallDetailsEntry> entries;
+ private DialerContact contact;
+
+ public static boolean isLaunchIntent(Intent intent) {
+ return intent.getComponent() != null
+ && CallDetailsActivity.class.getName().equals(intent.getComponent().getClassName());
+ }
public static Intent newInstance(
- Context context, @NonNull CallDetailsEntries details, @NonNull CallComposerContact contact) {
+ Context context,
+ @NonNull CallDetailsEntries details,
+ @NonNull DialerContact contact,
+ boolean canReportCallerId) {
Assert.isNotNull(details);
Assert.isNotNull(contact);
Intent intent = new Intent(context, CallDetailsActivity.class);
ProtoParsers.put(intent, EXTRA_CONTACT, contact);
ProtoParsers.put(intent, EXTRA_CALL_DETAILS_ENTRIES, details);
+ intent.putExtra(EXTRA_CAN_REPORT_CALLER_ID, canReportCallerId);
return intent;
}
@@ -62,30 +79,49 @@ public class CallDetailsActivity extends AppCompatActivity implements OnMenuItem
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.call_details_activity);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.call_details_menu);
toolbar.setOnMenuItemClickListener(this);
toolbar.setTitle(R.string.call_details);
+ toolbar.setNavigationOnClickListener(
+ v -> {
+ PerformanceReport.recordClick(UiAction.Type.CLOSE_CALL_DETAIL_WITH_CANCEL_BUTTON);
+ finish();
+ });
onHandleIntent(getIntent());
}
@Override
+ protected void onResume() {
+ super.onResume();
+
+ // Some calls may not be recorded (eg. from quick contact),
+ // so we should restart recording after these calls. (Recorded call is stopped)
+ PostCall.restartPerformanceRecordingIfARecentCallExist(this);
+ if (!PerformanceReport.isRecording()) {
+ PerformanceReport.startRecording();
+ }
+
+ PostCall.promptUserForMessageIfNecessary(this, findViewById(R.id.recycler_view));
+ }
+
+ @Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
onHandleIntent(intent);
}
private void onHandleIntent(Intent intent) {
- CallComposerContact contact =
- ProtoParsers.getTrusted(intent, EXTRA_CONTACT, CallComposerContact.getDefaultInstance());
+ contact = ProtoParsers.getTrusted(intent, EXTRA_CONTACT, DialerContact.getDefaultInstance());
entries =
ProtoParsers.getTrusted(
intent, EXTRA_CALL_DETAILS_ENTRIES, CallDetailsEntries.getDefaultInstance())
.getEntriesList();
- RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
+ RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
- recyclerView.setAdapter(new CallDetailsAdapter(this, contact, entries));
+ recyclerView.setAdapter(new CallDetailsAdapter(this, contact, entries, this));
+ PerformanceReport.logOnScrollStateChange(recyclerView);
}
@Override
@@ -99,6 +135,22 @@ public class CallDetailsActivity extends AppCompatActivity implements OnMenuItem
return false;
}
+ @Override
+ public void onBackPressed() {
+ PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
+ super.onBackPressed();
+ }
+
+ @Override
+ public void reportCallId(String number) {
+ ReportDialogFragment.newInstance(number).show(getFragmentManager(), null);
+ }
+
+ @Override
+ public boolean canReportCallerId(String number) {
+ return getIntent().getExtras().getBoolean(EXTRA_CAN_REPORT_CALLER_ID, false);
+ }
+
/** Delete specified calls from the call log. */
private class DeleteCallsTask extends AsyncTask<Void, Void, Void> {
@@ -124,6 +176,15 @@ public class CallDetailsActivity extends AppCompatActivity implements OnMenuItem
@Override
public void onPostExecute(Void result) {
+ Intent data = new Intent();
+ data.putExtra(EXTRA_PHONE_NUMBER, contact.getNumber());
+ for (CallDetailsEntry entry : entries) {
+ if (entry.getHistoryResultsCount() > 0) {
+ data.putExtra(EXTRA_HAS_ENRICHED_CALL_DATA, true);
+ break;
+ }
+ }
+ setResult(RESULT_OK, data);
finish();
}
}