diff options
Diffstat (limited to 'solo-tool-project/src/solo_tool/solo_tool.py')
-rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index 743c8d5..a4c7af8 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -1,6 +1,5 @@ import os -from .playlist import Playlist from .abcontroller import ABController from .session_manager import loadSession, saveSession from .notifier import Notifier @@ -9,13 +8,17 @@ from .player_vlc import Player class SoloTool: def __init__(self, playerOverride=None): self._player = Player() if playerOverride is None else playerOverride - self._playlist = Playlist(self._playlistCallback) self._abController = ABController(enabled=False, callback=self._abControllerCallback) self._notifier = Notifier(self._player) + self._songList = [] + self._song = None - def _playlistCallback(self, path): + def _updateSong(self, index): + self._song = index + path = self._songList[index] self._player.setCurrentSong(path) self._abController.setCurrentSong(path) + self._notifier.notify(Notifier.CURRENT_SONG_EVENT, index) def _abControllerCallback(self, position): self._player.setPlaybackPosition(position) @@ -26,23 +29,20 @@ class SoloTool: @property def songList(self) -> list[str]: - return self._playlist.getSongs() + return self._songList def addSong(self, path: str) -> None: if os.path.isfile(path): - self._playlist.addSong(path) + self._songList.append(path) @property def song(self) -> int: - return self._playlist.getCurrentSongIndex() + return self._song @song.setter - def song(self, index: int) -> None: - previous = self._playlist.getCurrentSongIndex() - self._playlist.setCurrentSong(index) - new = self._playlist.getCurrentSongIndex() - if previous != new: - self._notifier.notify(Notifier.CURRENT_SONG_EVENT, new) + def song(self, new: int) -> None: + if new >= 0 and new < len(self._songList) and new != self._song: + self._updateSong(new) def storeAbLimits(self, aLimit, bLimit): self._abController.storeLimits(aLimit, bLimit) @@ -58,9 +58,8 @@ class SoloTool: self._abController.setLimits(aLimit, bLimit) def getStoredAbLimits(self): - currentSong = self._playlist.getCurrentSong() - if currentSong is not None: - return self._abController.getStoredLimits(currentSong) + if self._song is not None: + return self._abController.getStoredLimits(self.songList[self._song]) else: return list() @@ -95,11 +94,11 @@ class SoloTool: def loadSession(self, path): with open(path, "r") as f: - loadSession(f, self._playlist, self._abController) + loadSession(f, self._songList, self._abController) def saveSession(self, path): with open(path, "w") as f: - saveSession(f, self._playlist, self._abController) + saveSession(f, self._songList, self._abController) def play(self): self._player.play() |