diff options
author | Eddy Pedroni <epedroni@pm.me> | 2025-02-25 13:38:17 +0100 |
---|---|---|
committer | Eddy Pedroni <epedroni@pm.me> | 2025-02-25 13:38:17 +0100 |
commit | 62490ac2be04aa3b819222f11389e0549f5909e9 (patch) | |
tree | 1d8c79c3e1e0e1fc2fed71bdbcfcdf4ff97b2066 /solo-tool-project/src/solo_tool/solo_tool.py | |
parent | 876071a7a41ee4a1f579739b242a00058bdc160d (diff) |
Add song list notification, edge case tests
Diffstat (limited to 'solo-tool-project/src/solo_tool/solo_tool.py')
-rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index f5b05c0..bc20013 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -4,8 +4,8 @@ from .notifier import Notifier from .player_vlc import Player class SoloTool: - def __init__(self, playerOverride=None): - self._player = Player() if playerOverride is None else playerOverride + def __init__(self, player=None): + self._player = Player() if player is None else player self._notifier = Notifier(self._player) self._songs = [] self._song = None @@ -31,8 +31,11 @@ class SoloTool: def addSong(self, path: str) -> None: if not os.path.isfile(path): raise FileNotFoundError(path) + if path in self._songs: + return self._songs.append(path) self._keyPoints.append([]) + self._notifier.notify(Notifier.SONG_LIST_EVENT, self.songs) if self.song is None: self.song = 0 @@ -116,6 +119,12 @@ class SoloTool: if new is not None and new != self._player.getPlaybackPosition(): self._player.setPlaybackPosition(min(max(0.0, new), 1.0)) + def registerSongSelectionCallback(self, callback): + self._notifier.registerCallback(Notifier.CURRENT_SONG_EVENT, callback) + + def registerSongListCallback(self, callback): + self._notifier.registerCallback(Notifier.SONG_LIST_EVENT, callback) + def registerPlayingStateCallback(self, callback): self._notifier.registerCallback(Notifier.PLAYING_STATE_EVENT, callback) @@ -125,9 +134,6 @@ class SoloTool: def registerRateCallback(self, callback): self._notifier.registerCallback(Notifier.PLAYBACK_RATE_EVENT, callback) - def registerCurrentSongCallback(self, callback): - self._notifier.registerCallback(Notifier.CURRENT_SONG_EVENT, callback) - def registerCurrentKeyPointCallback(self, callback): self._notifier.registerCallback(Notifier.CURRENT_KEY_POINT_EVENT, callback) |