Skip to content

Commit 5d6fa02

Browse files
committed
refactor: simplify logic for registering new seekbar listeners
1 parent 8405211 commit 5d6fa02

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

app/src/main/java/com/github/libretube/ui/views/DismissableTimeBar.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ open class DismissableTimeBar(
2222
private var shouldAddListener = false
2323
var exoPlayer: Player? = null
2424

25+
private val listeners = mutableListOf<OnScrubListener>()
26+
2527
// Drag-only seeking state
2628
private var initialX: Float = 0f
2729
private var initialY: Float = 0f
@@ -30,15 +32,22 @@ open class DismissableTimeBar(
3032
private val touchSlopPx: Int = ViewConfiguration.get(context).scaledTouchSlop
3133

3234
init {
33-
addSeekBarListener(object : OnScrubListener {
34-
override fun onScrubStart(timeBar: TimeBar, position: Long) = Unit
35+
super.addListener(object : OnScrubListener {
36+
override fun onScrubStart(timeBar: TimeBar, position: Long) {
37+
listeners.forEach { it.onScrubStart(timeBar, position) }
38+
}
3539

36-
override fun onScrubMove(timeBar: TimeBar, position: Long) = Unit
40+
override fun onScrubMove(timeBar: TimeBar, position: Long) {
41+
listeners.forEach { it.onScrubMove(timeBar, position) }
42+
}
3743

3844
override fun onScrubStop(timeBar: TimeBar, position: Long, canceled: Boolean) {
45+
listeners.forEach { it.onScrubStop(timeBar, position, canceled) }
46+
3947
if (canceled) return
4048
// Ignore if gesture started too far above the bar (keep original behavior)
4149
if (initialY <= MINIMUM_ACCEPTED_HEIGHT.dpToPx()) return
50+
4251
exoPlayer?.seekTo(position)
4352
}
4453
})
@@ -109,17 +118,16 @@ open class DismissableTimeBar(
109118
/**
110119
* DO NOT CALL THIS METHOD DIRECTLY. Use [addSeekBarListener] instead!
111120
*/
121+
@Deprecated("Use addSeekBarListener instead")
112122
override fun addListener(listener: OnScrubListener) {
113-
if (shouldAddListener) super.addListener(listener)
123+
// do nothing, see below on how listeners should be set
114124
}
115125

116126
/**
117127
* Wrapper to circumvent adding the listener created by [PlayerControlView]
118128
*/
119129
fun addSeekBarListener(listener: OnScrubListener) {
120-
shouldAddListener = true
121-
addListener(listener)
122-
shouldAddListener = false
130+
listeners.add(listener)
123131
}
124132

125133
fun setPlayer(player: Player) {

0 commit comments

Comments
 (0)