Skip to content

Commit 080c4ba

Browse files
XiangRongLinlitetex
authored andcommitted
Extract 2 view click listeners from Player
1 parent 37aca3f commit 080c4ba

3 files changed

Lines changed: 105 additions & 8 deletions

File tree

app/src/main/java/org/schabi/newpipe/player/Player.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@
167167
import org.schabi.newpipe.player.helper.PlaybackParameterDialog;
168168
import org.schabi.newpipe.player.helper.PlayerDataSource;
169169
import org.schabi.newpipe.player.helper.PlayerHelper;
170+
import org.schabi.newpipe.player.listeners.view.PlaybackSpeedListener;
171+
import org.schabi.newpipe.player.listeners.view.QualityTextListener;
170172
import org.schabi.newpipe.player.playback.CustomTrackSelector;
171173
import org.schabi.newpipe.player.playback.MediaSourceManager;
172174
import org.schabi.newpipe.player.playback.PlaybackListener;
@@ -530,9 +532,12 @@ private void initPlayer(final boolean playOnReady) {
530532
}
531533

532534
private void initListeners() {
535+
binding.qualityTextView.setOnClickListener(
536+
new QualityTextListener(this, qualityPopupMenu));
537+
binding.playbackSpeed.setOnClickListener(
538+
new PlaybackSpeedListener(this, playbackSpeedPopupMenu));
539+
533540
binding.playbackSeekBar.setOnSeekBarChangeListener(this);
534-
binding.playbackSpeed.setOnClickListener(this);
535-
binding.qualityTextView.setOnClickListener(this);
536541
binding.captionTextView.setOnClickListener(this);
537542
binding.resizeTextView.setOnClickListener(this);
538543
binding.playbackLiveSync.setOnClickListener(this);
@@ -1926,7 +1931,7 @@ public void hideControls(final long duration, final long delay) {
19261931
}, delay);
19271932
}
19281933

1929-
private void showHideShadow(final boolean show, final long duration) {
1934+
public void showHideShadow(final boolean show, final long duration) {
19301935
animate(binding.playbackControlsShadow, show, duration, AnimationType.ALPHA, 0, null);
19311936
animate(binding.playerTopShadow, show, duration, AnimationType.ALPHA, 0, null);
19321937
animate(binding.playerBottomShadow, show, duration, AnimationType.ALPHA, 0, null);
@@ -3742,11 +3747,7 @@ public void onClick(final View v) {
37423747
if (DEBUG) {
37433748
Log.d(TAG, "onClick() called with: v = [" + v + "]");
37443749
}
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()) {
3750+
if (v.getId() == binding.resizeTextView.getId()) {
37503751
onResizeClicked();
37513752
} else if (v.getId() == binding.captionTextView.getId()) {
37523753
onCaptionClicked();
@@ -4446,6 +4447,10 @@ public boolean isSomePopupMenuVisible() {
44464447
return isSomePopupMenuVisible;
44474448
}
44484449

4450+
public void setSomePopupMenuVisible(final boolean somePopupMenuVisible) {
4451+
isSomePopupMenuVisible = somePopupMenuVisible;
4452+
}
4453+
44494454
public ImageButton getPlayPauseButton() {
44504455
return binding.playPauseButton;
44514456
}
@@ -4527,6 +4532,11 @@ public ExpandableSurfaceView getSurfaceView() {
45274532
public PlayQueueAdapter getPlayQueueAdapter() {
45284533
return playQueueAdapter;
45294534
}
4535+
4536+
public PlayerBinding getBinding() {
4537+
return binding;
4538+
}
4539+
45304540
//endregion
45314541

45324542

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.schabi.newpipe.player.listeners.view
2+
3+
import android.util.Log
4+
import android.view.View
5+
import android.widget.PopupMenu
6+
import org.schabi.newpipe.MainActivity
7+
import org.schabi.newpipe.player.Player
8+
import org.schabi.newpipe.player.helper.PlaybackParameterDialog
9+
10+
class PlaybackSpeedListener(
11+
private val player: Player,
12+
private val playbackSpeedPopupMenu: PopupMenu
13+
14+
) : View.OnClickListener {
15+
16+
companion object {
17+
private val DEBUG = MainActivity.DEBUG
18+
private val TAG: String = PlaybackSpeedListener::class.java.simpleName
19+
}
20+
21+
override fun onClick(v: View) {
22+
if (player.binding.qualityTextView.id == v.id) {
23+
if (DEBUG) {
24+
Log.d(TAG, "onPlaybackSpeedClicked() called")
25+
}
26+
27+
if (player.videoPlayerSelected()) {
28+
PlaybackParameterDialog.newInstance(
29+
player.playbackSpeed.toDouble(),
30+
player.playbackPitch.toDouble(),
31+
player.playbackSkipSilence
32+
) { speed: Float, pitch: Float, skipSilence: Boolean ->
33+
player.setPlaybackParameters(
34+
speed,
35+
pitch,
36+
skipSilence
37+
)
38+
}
39+
.show(player.parentActivity!!.supportFragmentManager, null)
40+
} else {
41+
playbackSpeedPopupMenu.show()
42+
player.isSomePopupMenuVisible = true
43+
}
44+
}
45+
}
46+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.schabi.newpipe.player.listeners.view
2+
3+
import android.util.Log
4+
import android.view.View
5+
import android.widget.PopupMenu
6+
import org.schabi.newpipe.MainActivity
7+
import org.schabi.newpipe.extractor.MediaFormat
8+
import org.schabi.newpipe.player.Player
9+
10+
class QualityTextListener(
11+
private val player: Player,
12+
private val qualityPopupMenu: PopupMenu
13+
) : View.OnClickListener {
14+
15+
companion object {
16+
private val DEBUG = MainActivity.DEBUG
17+
private val TAG: String = QualityTextListener::class.java.simpleName
18+
}
19+
20+
override fun onClick(v: View) {
21+
if (player.binding.qualityTextView.id == v.id) {
22+
if (DEBUG) {
23+
Log.d(TAG, "onQualitySelectorClicked() called")
24+
}
25+
26+
qualityPopupMenu.show()
27+
player.isSomePopupMenuVisible = true
28+
29+
val videoStream = player.selectedVideoStream
30+
if (videoStream != null) {
31+
val qualityText = (
32+
MediaFormat.getNameById(videoStream.formatId) + " " +
33+
videoStream.resolution
34+
)
35+
player.binding.qualityTextView.text = qualityText
36+
}
37+
38+
player.saveWasPlaying()
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)