ultrasonic-app-subsonic-and.../ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/NowPlayingEventDistributor.kt

27 lines
797 B
Kotlin
Raw Normal View History

2021-02-08 20:24:20 +01:00
package org.moire.ultrasonic.util
2021-03-01 17:24:25 +01:00
/**
* This class distributes Now Playing related events to its subscribers.
* It is a primitive implementation of a pub-sub event bus
*/
2021-02-08 20:24:20 +01:00
class NowPlayingEventDistributor {
2021-03-01 17:24:25 +01:00
private var eventListenerList: MutableList<NowPlayingEventListener> =
listOf<NowPlayingEventListener>().toMutableList()
2021-02-08 20:24:20 +01:00
fun subscribe(listener: NowPlayingEventListener) {
eventListenerList.add(listener)
}
fun unsubscribe(listener: NowPlayingEventListener) {
eventListenerList.remove(listener)
}
2021-03-01 17:24:25 +01:00
fun raiseShowNowPlayingEvent() {
eventListenerList.forEach { listener -> listener.onShowNowPlaying() }
2021-02-08 20:24:20 +01:00
}
2021-03-01 17:24:25 +01:00
fun raiseHideNowPlayingEvent() {
eventListenerList.forEach { listener -> listener.onHideNowPlaying() }
2021-02-08 20:24:20 +01:00
}
}