diff options
Diffstat (limited to 'java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java')
-rw-r--r-- | java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java b/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java index 955c7daee..671a39a67 100644 --- a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java +++ b/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java @@ -56,7 +56,7 @@ final class NewVoicemailAdapter extends RecyclerView.Adapter<ViewHolder> int VOICEMAIL_ENTRY = 2; } - private final Cursor cursor; + private Cursor cursor; private final Clock clock; /** {@link Integer#MAX_VALUE} when the "Today" header should not be displayed. */ @@ -129,6 +129,11 @@ final class NewVoicemailAdapter extends RecyclerView.Adapter<ViewHolder> mediaPlayer.setOnErrorListener(onErrorListener); } + public void updateCursor(Cursor updatedCursor) { + this.cursor = updatedCursor; + notifyDataSetChanged(); + } + @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @RowType int viewType) { LogUtil.enterBlock("NewVoicemailAdapter.onCreateViewHolder"); @@ -714,7 +719,7 @@ final class NewVoicemailAdapter extends RecyclerView.Adapter<ViewHolder> // returned when currentlyExpandedViewHolderId = -1 (viewholder was collapsed) LogUtil.i( "NewVoicemailAdapter.getCurrentlyExpandedViewHolder", - "no view holder found in newVoicemailViewHolderArrayMap size:%d for %d", + "no view holder found in hashmap size:%d for %d", newVoicemailViewHolderArrayMap.size(), currentlyExpandedViewHolderId); // TODO(uabdullah): a bug Remove logging, temporarily here for debugging. @@ -749,4 +754,34 @@ final class NewVoicemailAdapter extends RecyclerView.Adapter<ViewHolder> } return RowType.VOICEMAIL_ENTRY; } + + /** + * This will be called once the voicemail that was attempted to be played (and was not locally + * available) was downloaded from the server. However it is possible that by the time the download + * was completed, the view holder was collapsed. In that case we shouldn't play the voicemail. + */ + public void checkAndPlayVoicemail() { + LogUtil.i( + "NewVoicemailAdapter.checkAndPlayVoicemail", + "expandedViewHolder:%d, inViewHolderSet:%b, MPRequestToDownload:%s", + currentlyExpandedViewHolderId, + isCurrentlyExpandedViewHolderInViewHolderSet(), + String.valueOf(mediaPlayer.getVoicemailRequestedToDownload())); + + NewVoicemailViewHolder currentlyExpandedViewHolder = getCurrentlyExpandedViewHolder(); + if (currentlyExpandedViewHolderId != -1 + && isCurrentlyExpandedViewHolderInViewHolderSet() + && currentlyExpandedViewHolder != null + // Used to differentiate underlying table changes from voicemail downloads and other changes + // (e.g delete) + && mediaPlayer.getVoicemailRequestedToDownload() != null + && (mediaPlayer + .getVoicemailRequestedToDownload() + .equals(currentlyExpandedViewHolder.getViewHolderVoicemailUri()))) { + currentlyExpandedViewHolder.clickPlayButtonOfViewHoldersMediaPlayerView( + currentlyExpandedViewHolder); + } else { + LogUtil.i("NewVoicemailAdapter.checkAndPlayVoicemail", "not playing downloaded voicemail"); + } + } } |