164164import org .schabi .newpipe .player .helper .AudioReactor ;
165165import org .schabi .newpipe .player .helper .LoadController ;
166166import org .schabi .newpipe .player .helper .MediaSessionManager ;
167- import org .schabi .newpipe .player .helper .PlaybackParameterDialog ;
168167import org .schabi .newpipe .player .helper .PlayerDataSource ;
169168import org .schabi .newpipe .player .helper .PlayerHelper ;
169+ import org .schabi .newpipe .player .listeners .view .PlaybackSpeedClickListener ;
170+ import org .schabi .newpipe .player .listeners .view .QualityClickListener ;
170171import org .schabi .newpipe .player .playback .CustomTrackSelector ;
171172import org .schabi .newpipe .player .playback .MediaSourceManager ;
172173import org .schabi .newpipe .player .playback .PlaybackListener ;
@@ -530,9 +531,12 @@ private void initPlayer(final boolean playOnReady) {
530531 }
531532
532533 private void initListeners () {
534+ binding .qualityTextView .setOnClickListener (
535+ new QualityClickListener (this , qualityPopupMenu ));
536+ binding .playbackSpeed .setOnClickListener (
537+ new PlaybackSpeedClickListener (this , playbackSpeedPopupMenu ));
538+
533539 binding .playbackSeekBar .setOnSeekBarChangeListener (this );
534- binding .playbackSpeed .setOnClickListener (this );
535- binding .qualityTextView .setOnClickListener (this );
536540 binding .captionTextView .setOnClickListener (this );
537541 binding .resizeTextView .setOnClickListener (this );
538542 binding .playbackLiveSync .setOnClickListener (this );
@@ -541,11 +545,15 @@ private void initListeners() {
541545 gestureDetector = new GestureDetectorCompat (context , playerGestureListener );
542546 binding .getRoot ().setOnTouchListener (playerGestureListener );
543547
544- binding .queueButton .setOnClickListener (this );
545- binding .segmentsButton .setOnClickListener (this );
546- binding .repeatButton .setOnClickListener (this );
547- binding .shuffleButton .setOnClickListener (this );
548- binding .addToPlaylistButton .setOnClickListener (this );
548+ binding .queueButton .setOnClickListener (v -> onQueueClicked ());
549+ binding .segmentsButton .setOnClickListener (v -> onSegmentsClicked ());
550+ binding .repeatButton .setOnClickListener (v -> onRepeatClicked ());
551+ binding .shuffleButton .setOnClickListener (v -> onShuffleClicked ());
552+ binding .addToPlaylistButton .setOnClickListener (v -> {
553+ if (getParentActivity () != null ) {
554+ onAddToPlaylistClicked (getParentActivity ().getSupportFragmentManager ());
555+ }
556+ });
549557
550558 binding .playPauseButton .setOnClickListener (this );
551559 binding .playPreviousButton .setOnClickListener (this );
@@ -1926,7 +1934,7 @@ public void hideControls(final long duration, final long delay) {
19261934 }, delay );
19271935 }
19281936
1929- private void showHideShadow (final boolean show , final long duration ) {
1937+ public void showHideShadow (final boolean show , final long duration ) {
19301938 animate (binding .playbackControlsShadow , show , duration , AnimationType .ALPHA , 0 , null );
19311939 animate (binding .playerTopShadow , show , duration , AnimationType .ALPHA , 0 , null );
19321940 animate (binding .playerBottomShadow , show , duration , AnimationType .ALPHA , 0 , null );
@@ -3607,37 +3615,6 @@ public void onDismiss(@Nullable final PopupMenu menu) {
36073615 }
36083616 }
36093617
3610- private void onQualitySelectorClicked () {
3611- if (DEBUG ) {
3612- Log .d (TAG , "onQualitySelectorClicked() called" );
3613- }
3614- qualityPopupMenu .show ();
3615- isSomePopupMenuVisible = true ;
3616-
3617- final VideoStream videoStream = getSelectedVideoStream ();
3618- if (videoStream != null ) {
3619- final String qualityText = MediaFormat .getNameById (videoStream .getFormatId ()) + " "
3620- + videoStream .resolution ;
3621- binding .qualityTextView .setText (qualityText );
3622- }
3623-
3624- saveWasPlaying ();
3625- }
3626-
3627- private void onPlaybackSpeedClicked () {
3628- if (DEBUG ) {
3629- Log .d (TAG , "onPlaybackSpeedClicked() called" );
3630- }
3631- if (videoPlayerSelected ()) {
3632- PlaybackParameterDialog .newInstance (getPlaybackSpeed (), getPlaybackPitch (),
3633- getPlaybackSkipSilence (), this ::setPlaybackParameters )
3634- .show (getParentActivity ().getSupportFragmentManager (), null );
3635- } else {
3636- playbackSpeedPopupMenu .show ();
3637- isSomePopupMenuVisible = true ;
3638- }
3639- }
3640-
36413618 private void onCaptionClicked () {
36423619 if (DEBUG ) {
36433620 Log .d (TAG , "onCaptionClicked() called" );
@@ -3742,11 +3719,7 @@ public void onClick(final View v) {
37423719 if (DEBUG ) {
37433720 Log .d (TAG , "onClick() called with: v = [" + v + "]" );
37443721 }
3745- if (v .getId () == binding .qualityTextView .getId ()) {
3746- onQualitySelectorClicked ();
3747- } else if (v .getId () == binding .playbackSpeed .getId ()) {
3748- onPlaybackSpeedClicked ();
3749- } else if (v .getId () == binding .resizeTextView .getId ()) {
3722+ if (v .getId () == binding .resizeTextView .getId ()) {
37503723 onResizeClicked ();
37513724 } else if (v .getId () == binding .captionTextView .getId ()) {
37523725 onCaptionClicked ();
@@ -3758,23 +3731,6 @@ public void onClick(final View v) {
37583731 playPrevious ();
37593732 } else if (v .getId () == binding .playNextButton .getId ()) {
37603733 playNext ();
3761- } else if (v .getId () == binding .queueButton .getId ()) {
3762- onQueueClicked ();
3763- return ;
3764- } else if (v .getId () == binding .segmentsButton .getId ()) {
3765- onSegmentsClicked ();
3766- return ;
3767- } else if (v .getId () == binding .repeatButton .getId ()) {
3768- onRepeatClicked ();
3769- return ;
3770- } else if (v .getId () == binding .shuffleButton .getId ()) {
3771- onShuffleClicked ();
3772- return ;
3773- } else if (v .getId () == binding .addToPlaylistButton .getId ()) {
3774- if (getParentActivity () != null ) {
3775- onAddToPlaylistClicked (getParentActivity ().getSupportFragmentManager ());
3776- }
3777- return ;
37783734 } else if (v .getId () == binding .moreOptionsButton .getId ()) {
37793735 onMoreOptionsClicked ();
37803736 } else if (v .getId () == binding .share .getId ()) {
@@ -3803,23 +3759,33 @@ public void onClick(final View v) {
38033759 context .sendBroadcast (new Intent (VideoDetailFragment .ACTION_HIDE_MAIN_PLAYER ));
38043760 }
38053761
3806- if (currentState != STATE_COMPLETED ) {
3807- controlsVisibilityHandler .removeCallbacksAndMessages (null );
3808- showHideShadow (true , DEFAULT_CONTROLS_DURATION );
3809- animate (binding .playbackControlRoot , true , DEFAULT_CONTROLS_DURATION ,
3810- AnimationType .ALPHA , 0 , () -> {
3811- if (currentState == STATE_PLAYING && !isSomePopupMenuVisible ) {
3812- if (v .getId () == binding .playPauseButton .getId ()
3813- // Hide controls in fullscreen immediately
3814- || (v .getId () == binding .screenRotationButton .getId ()
3815- && isFullscreen )) {
3816- hideControls (0 , 0 );
3817- } else {
3818- hideControls (DEFAULT_CONTROLS_DURATION , DEFAULT_CONTROLS_HIDE_TIME );
3819- }
3820- }
3821- });
3762+ manageControlsAfterOnClick (v );
3763+ }
3764+
3765+ /**
3766+ * Manages the controls after a click occurred on the player UI.
3767+ * @param v – The view that was clicked
3768+ */
3769+ public void manageControlsAfterOnClick (@ NonNull final View v ) {
3770+ if (currentState == STATE_COMPLETED ) {
3771+ return ;
38223772 }
3773+
3774+ controlsVisibilityHandler .removeCallbacksAndMessages (null );
3775+ showHideShadow (true , DEFAULT_CONTROLS_DURATION );
3776+ animate (binding .playbackControlRoot , true , DEFAULT_CONTROLS_DURATION ,
3777+ AnimationType .ALPHA , 0 , () -> {
3778+ if (currentState == STATE_PLAYING && !isSomePopupMenuVisible ) {
3779+ if (v .getId () == binding .playPauseButton .getId ()
3780+ // Hide controls in fullscreen immediately
3781+ || (v .getId () == binding .screenRotationButton .getId ()
3782+ && isFullscreen )) {
3783+ hideControls (0 , 0 );
3784+ } else {
3785+ hideControls (DEFAULT_CONTROLS_DURATION , DEFAULT_CONTROLS_HIDE_TIME );
3786+ }
3787+ }
3788+ });
38233789 }
38243790
38253791 @ Override
@@ -4446,6 +4412,10 @@ public boolean isSomePopupMenuVisible() {
44464412 return isSomePopupMenuVisible ;
44474413 }
44484414
4415+ public void setSomePopupMenuVisible (final boolean somePopupMenuVisible ) {
4416+ isSomePopupMenuVisible = somePopupMenuVisible ;
4417+ }
4418+
44494419 public ImageButton getPlayPauseButton () {
44504420 return binding .playPauseButton ;
44514421 }
@@ -4527,6 +4497,11 @@ public ExpandableSurfaceView getSurfaceView() {
45274497 public PlayQueueAdapter getPlayQueueAdapter () {
45284498 return playQueueAdapter ;
45294499 }
4500+
4501+ public PlayerBinding getBinding () {
4502+ return binding ;
4503+ }
4504+
45304505 //endregion
45314506
45324507
0 commit comments