class Notifier: PLAYING_STATE_EVENT = 0 PLAYBACK_VOLUME_EVENT = 1 PLAYBACK_RATE_EVENT = 2 CURRENT_SONG_EVENT = 3 CURRENT_AB_EVENT = 4 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())