aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool/notifier.py
diff options
context:
space:
mode:
Diffstat (limited to 'solo-tool-project/src/solo_tool/notifier.py')
-rw-r--r--solo-tool-project/src/solo_tool/notifier.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/solo-tool-project/src/solo_tool/notifier.py b/solo-tool-project/src/solo_tool/notifier.py
new file mode 100644
index 0000000..9f445b6
--- /dev/null
+++ b/solo-tool-project/src/solo_tool/notifier.py
@@ -0,0 +1,29 @@
+class Notifier:
+ PLAYING_STATE_EVENT = 0
+ PLAYBACK_VOLUME_EVENT = 1
+ PLAYBACK_RATE_EVENT = 2
+ CURRENT_SONG_EVENT = 3
+ CURRENT_AB_EVENT = 4
+ AB_LIMIT_ENABLED_EVENT = 5
+
+ def __init__(self, player):
+ self._callbacks = dict()
+ self._player = player
+ self._player.setPlayingStateChangedCallback(self._playingStateChangedCallback)
+ self._player.setPlaybackVolumeChangedCallback(self._playbackVolumeChangedCallback)
+
+ def registerCallback(self, event, callback):
+ if event not in self._callbacks:
+ self._callbacks[event] = list()
+ self._callbacks[event].append(callback)
+
+ def notify(self, event, value):
+ for callback in self._callbacks.get(event, list()):
+ callback(value)
+
+ def _playingStateChangedCallback(self, *args):
+ self.notify(Notifier.PLAYING_STATE_EVENT, self._player.isPlaying())
+
+ def _playbackVolumeChangedCallback(self, *args):
+ self.notify(Notifier.PLAYBACK_VOLUME_EVENT, self._player.getPlaybackVolume())
+