Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85647649 authored by Nancy Chen's avatar Nancy Chen
Browse files

Reset voicemail playback when call log is paused.

If the user navigates away from the call log, reset the currently
playing voicemail playback. Which includes resetting the start point,
pausing playback, and refreshing the play icon.

Bug: 22530093
Change-Id: I78eda2d86cf0f5b24136a7a9ba299214f155672b
parent 515575eb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ public class CallLogAdapter extends GroupingListAdapter

            if (mVoicemailPlaybackPresenter != null) {
                // Always reset the voicemail playback state on expand or collapse.
                mVoicemailPlaybackPresenter.reset();
                mVoicemailPlaybackPresenter.resetAll();
            }

            if (viewHolder.getAdapterPosition() == mCurrentlyExpandedPosition) {
+17 −10
Original line number Diff line number Diff line
@@ -260,7 +260,17 @@ public class VoicemailPlaybackPresenter
    }

    /**
     * Reset the presenter for playback.
     * Reset the presenter for playback back to its original state.
     */
    public void resetAll() {
        reset();

        mView = null;
        mVoicemailUri = null;
    }

    /**
     * Reset the presenter such that it is as if the voicemail has not been played.
     */
    public void reset() {
        if (mMediaPlayer != null) {
@@ -270,13 +280,15 @@ public class VoicemailPlaybackPresenter

        disableProximitySensor(false /* waitForFarState */);

        mView = null;
        mVoicemailUri = null;

        mIsPrepared = false;
        mIsPlaying = false;
        mPosition = 0;
        mDuration.set(0);

        if (mView != null) {
            mView.onPlaybackStopped();
            mView.setClipPosition(0, mDuration.get());
        }
    }

    /**
@@ -291,16 +303,11 @@ public class VoicemailPlaybackPresenter
        }

        // Release the media player, otherwise there may be failures.
        if (mMediaPlayer != null) {
            mMediaPlayer.release();
            mMediaPlayer = null;
            mIsPrepared = false;
        }
        reset();

        if (mActivity != null) {
            mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
        disableProximitySensor(false /* waitForFarState */);
    }

    /**