Loading java/com/android/dialer/calldetails/CallDetailsActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -134,7 +134,6 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { private void updateCallDetailsEntries(CallDetailsEntries newEntries) { activity.setCallDetailsEntries(newEntries); activity.getAdapter().updateCallDetailsEntries(newEntries); EnrichedCallComponent.get(activity) .getEnrichedCallManager() .requestAllHistoricalData(activity.getNumber(), newEntries); Loading java/com/android/dialer/calldetails/CallDetailsActivityCommon.java +49 −1 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ import android.os.Bundle; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.support.annotation.CallSuper; import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresPermission; import android.support.annotation.WorkerThread; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; Loading @@ -45,6 +47,7 @@ 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.common.concurrent.UiListener; import com.android.dialer.common.database.Selection; import com.android.dialer.constants.ActivityRequestCodes; import com.android.dialer.duo.Duo; Loading @@ -58,7 +61,9 @@ import com.android.dialer.logging.UiAction; import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.postcall.PostCall; import com.android.dialer.precall.PreCall; import com.android.dialer.rtt.RttTranscriptUtil; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ListenableFuture; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; Loading Loading @@ -91,6 +96,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { private CallDetailsAdapterCommon adapter; private CallDetailsEntries callDetailsEntries; private UiListener<CallDetailsEntries> checkRttTranscriptAvailabilityListener; /** * Handles the intent that launches {@link OldCallDetailsActivity} or {@link CallDetailsActivity}, Loading Loading @@ -121,6 +127,9 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { }); handleIntent(getIntent()); setupRecyclerViewForEntries(); checkRttTranscriptAvailabilityListener = DialerExecutorComponent.get(this) .createUiListener(getFragmentManager(), "Query RTT transcript availability"); } @Override Loading @@ -143,6 +152,40 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { EnrichedCallComponent.get(this) .getEnrichedCallManager() .requestAllHistoricalData(getNumber(), callDetailsEntries); checkRttTranscriptAvailabilityListener.listen( this, checkRttTranscriptAvailability(), this::setCallDetailsEntries, throwable -> { throw new RuntimeException(throwable); }); } private ListenableFuture<CallDetailsEntries> checkRttTranscriptAvailability() { return DialerExecutorComponent.get(this) .backgroundExecutor() .submit(() -> checkRttTranscriptAvailabilityInBackground(callDetailsEntries)); } /** * Check RTT transcript availability. * * @param input the original {@link CallDetailsEntries} * @return {@link CallDetailsEntries} with updated RTT transcript availability. */ @WorkerThread private CallDetailsEntries checkRttTranscriptAvailabilityInBackground( @Nullable CallDetailsEntries input) { RttTranscriptUtil rttTranscriptUtil = new RttTranscriptUtil(this); CallDetailsEntries.Builder mutableCallDetailsEntries = CallDetailsEntries.newBuilder(); for (CallDetailsEntry entry : input.getEntriesList()) { CallDetailsEntry.Builder newEntry = CallDetailsEntry.newBuilder().mergeFrom(entry); newEntry.setHasRttTranscript( rttTranscriptUtil.checkRttTranscriptAvailability(String.valueOf(entry.getDate()))); mutableCallDetailsEntries.addEntries(newEntry.build()); } return mutableCallDetailsEntries.build(); } @Override Loading Loading @@ -185,8 +228,13 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { super.onBackPressed(); } @MainThread protected final void setCallDetailsEntries(CallDetailsEntries entries) { Assert.isMainThread(); this.callDetailsEntries = entries; if (adapter != null) { adapter.updateCallDetailsEntries(entries); } } protected final CallDetailsEntries getCallDetailsEntries() { Loading Loading @@ -415,7 +463,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { Map<CallDetailsEntry, List<HistoryResult>> mappedResults = getAllHistoricalData(activity.getNumber(), activity.callDetailsEntries); activity.adapter.updateCallDetailsEntries( activity.setCallDetailsEntries( generateAndMapNewCallDetailsEntriesHistoryResults( activity.getNumber(), activity.callDetailsEntries, mappedResults)); } Loading java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.dialer.calldetails; import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.MainThread; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.LayoutInflater; Loading Loading @@ -137,7 +138,9 @@ abstract class CallDetailsAdapterCommon extends RecyclerView.Adapter<RecyclerVie return callDetailsEntries; } @MainThread final void updateCallDetailsEntries(CallDetailsEntries entries) { Assert.isMainThread(); callDetailsEntries = entries; notifyDataSetChanged(); } Loading java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java +17 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder { private final TextView multimediaDetails; private final TextView postCallNote; private final TextView rttTranscript; private final ImageView multimediaImage; Loading @@ -81,6 +82,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder { multimediaImage = (ImageView) container.findViewById(R.id.multimedia_image); multimediaAttachmentsNumber = (TextView) container.findViewById(R.id.multimedia_attachments_number); rttTranscript = container.findViewById(R.id.rtt_transcript); } void setCallDetails( Loading @@ -94,6 +96,9 @@ public class CallDetailsEntryViewHolder extends ViewHolder { (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY) == Calls.FEATURES_PULLED_EXTERNALLY; boolean isDuoCall = entry.getIsDuoCall(); boolean isRttCall = BuildCompat.isAtLeastP() && (entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT; callTime.setTextColor(getColorForCallType(context, callType)); callTypeIcon.clear(); Loading Loading @@ -123,6 +128,18 @@ public class CallDetailsEntryViewHolder extends ViewHolder { context, entry.getDuration(), entry.getDataUsage())); } setMultimediaDetails(number, entry, showMultimediaDivider); if (isRttCall) { if (entry.getHasRttTranscript()) { rttTranscript.setText(R.string.rtt_transcript_link); rttTranscript.setTextAppearance(R.style.RttTranscriptLink); rttTranscript.setClickable(true); } else { rttTranscript.setText(R.string.rtt_transcript_not_available); rttTranscript.setTextAppearance(R.style.RttTranscriptMessage); rttTranscript.setClickable(false); } rttTranscript.setVisibility(View.VISIBLE); } } private void setMultimediaDetails(String number, CallDetailsEntry entry, boolean showDivider) { Loading java/com/android/dialer/calldetails/proto/call_details_entries.proto +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ message CallDetailsEntries { optional int64 data_usage = 6; repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7; optional bool is_duo_call = 8; optional bool has_rtt_transcript = 9; } repeated CallDetailsEntry entries = 1; Loading Loading
java/com/android/dialer/calldetails/CallDetailsActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -134,7 +134,6 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon { private void updateCallDetailsEntries(CallDetailsEntries newEntries) { activity.setCallDetailsEntries(newEntries); activity.getAdapter().updateCallDetailsEntries(newEntries); EnrichedCallComponent.get(activity) .getEnrichedCallManager() .requestAllHistoricalData(activity.getNumber(), newEntries); Loading
java/com/android/dialer/calldetails/CallDetailsActivityCommon.java +49 −1 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ import android.os.Bundle; import android.provider.CallLog; import android.provider.CallLog.Calls; import android.support.annotation.CallSuper; import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresPermission; import android.support.annotation.WorkerThread; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; Loading @@ -45,6 +47,7 @@ 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.common.concurrent.UiListener; import com.android.dialer.common.database.Selection; import com.android.dialer.constants.ActivityRequestCodes; import com.android.dialer.duo.Duo; Loading @@ -58,7 +61,9 @@ import com.android.dialer.logging.UiAction; import com.android.dialer.performancereport.PerformanceReport; import com.android.dialer.postcall.PostCall; import com.android.dialer.precall.PreCall; import com.android.dialer.rtt.RttTranscriptUtil; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.ListenableFuture; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; Loading Loading @@ -91,6 +96,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { private CallDetailsAdapterCommon adapter; private CallDetailsEntries callDetailsEntries; private UiListener<CallDetailsEntries> checkRttTranscriptAvailabilityListener; /** * Handles the intent that launches {@link OldCallDetailsActivity} or {@link CallDetailsActivity}, Loading Loading @@ -121,6 +127,9 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { }); handleIntent(getIntent()); setupRecyclerViewForEntries(); checkRttTranscriptAvailabilityListener = DialerExecutorComponent.get(this) .createUiListener(getFragmentManager(), "Query RTT transcript availability"); } @Override Loading @@ -143,6 +152,40 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { EnrichedCallComponent.get(this) .getEnrichedCallManager() .requestAllHistoricalData(getNumber(), callDetailsEntries); checkRttTranscriptAvailabilityListener.listen( this, checkRttTranscriptAvailability(), this::setCallDetailsEntries, throwable -> { throw new RuntimeException(throwable); }); } private ListenableFuture<CallDetailsEntries> checkRttTranscriptAvailability() { return DialerExecutorComponent.get(this) .backgroundExecutor() .submit(() -> checkRttTranscriptAvailabilityInBackground(callDetailsEntries)); } /** * Check RTT transcript availability. * * @param input the original {@link CallDetailsEntries} * @return {@link CallDetailsEntries} with updated RTT transcript availability. */ @WorkerThread private CallDetailsEntries checkRttTranscriptAvailabilityInBackground( @Nullable CallDetailsEntries input) { RttTranscriptUtil rttTranscriptUtil = new RttTranscriptUtil(this); CallDetailsEntries.Builder mutableCallDetailsEntries = CallDetailsEntries.newBuilder(); for (CallDetailsEntry entry : input.getEntriesList()) { CallDetailsEntry.Builder newEntry = CallDetailsEntry.newBuilder().mergeFrom(entry); newEntry.setHasRttTranscript( rttTranscriptUtil.checkRttTranscriptAvailability(String.valueOf(entry.getDate()))); mutableCallDetailsEntries.addEntries(newEntry.build()); } return mutableCallDetailsEntries.build(); } @Override Loading Loading @@ -185,8 +228,13 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { super.onBackPressed(); } @MainThread protected final void setCallDetailsEntries(CallDetailsEntries entries) { Assert.isMainThread(); this.callDetailsEntries = entries; if (adapter != null) { adapter.updateCallDetailsEntries(entries); } } protected final CallDetailsEntries getCallDetailsEntries() { Loading Loading @@ -415,7 +463,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity { Map<CallDetailsEntry, List<HistoryResult>> mappedResults = getAllHistoricalData(activity.getNumber(), activity.callDetailsEntries); activity.adapter.updateCallDetailsEntries( activity.setCallDetailsEntries( generateAndMapNewCallDetailsEntriesHistoryResults( activity.getNumber(), activity.callDetailsEntries, mappedResults)); } Loading
java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.dialer.calldetails; import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.MainThread; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.LayoutInflater; Loading Loading @@ -137,7 +138,9 @@ abstract class CallDetailsAdapterCommon extends RecyclerView.Adapter<RecyclerVie return callDetailsEntries; } @MainThread final void updateCallDetailsEntries(CallDetailsEntries entries) { Assert.isMainThread(); callDetailsEntries = entries; notifyDataSetChanged(); } Loading
java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java +17 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder { private final TextView multimediaDetails; private final TextView postCallNote; private final TextView rttTranscript; private final ImageView multimediaImage; Loading @@ -81,6 +82,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder { multimediaImage = (ImageView) container.findViewById(R.id.multimedia_image); multimediaAttachmentsNumber = (TextView) container.findViewById(R.id.multimedia_attachments_number); rttTranscript = container.findViewById(R.id.rtt_transcript); } void setCallDetails( Loading @@ -94,6 +96,9 @@ public class CallDetailsEntryViewHolder extends ViewHolder { (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY) == Calls.FEATURES_PULLED_EXTERNALLY; boolean isDuoCall = entry.getIsDuoCall(); boolean isRttCall = BuildCompat.isAtLeastP() && (entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT; callTime.setTextColor(getColorForCallType(context, callType)); callTypeIcon.clear(); Loading Loading @@ -123,6 +128,18 @@ public class CallDetailsEntryViewHolder extends ViewHolder { context, entry.getDuration(), entry.getDataUsage())); } setMultimediaDetails(number, entry, showMultimediaDivider); if (isRttCall) { if (entry.getHasRttTranscript()) { rttTranscript.setText(R.string.rtt_transcript_link); rttTranscript.setTextAppearance(R.style.RttTranscriptLink); rttTranscript.setClickable(true); } else { rttTranscript.setText(R.string.rtt_transcript_not_available); rttTranscript.setTextAppearance(R.style.RttTranscriptMessage); rttTranscript.setClickable(false); } rttTranscript.setVisibility(View.VISIBLE); } } private void setMultimediaDetails(String number, CallDetailsEntry entry, boolean showDivider) { Loading
java/com/android/dialer/calldetails/proto/call_details_entries.proto +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ message CallDetailsEntries { optional int64 data_usage = 6; repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7; optional bool is_duo_call = 8; optional bool has_rtt_transcript = 9; } repeated CallDetailsEntry entries = 1; Loading