diff options
Diffstat (limited to 'solo-tool-project/src/solo_tool')
| -rw-r--r-- | solo-tool-project/src/solo_tool/playlist.py | 26 | ||||
| -rw-r--r-- | solo-tool-project/src/solo_tool/session_manager.py | 11 | ||||
| -rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 33 | 
3 files changed, 21 insertions, 49 deletions
diff --git a/solo-tool-project/src/solo_tool/playlist.py b/solo-tool-project/src/solo_tool/playlist.py deleted file mode 100644 index 988cc04..0000000 --- a/solo-tool-project/src/solo_tool/playlist.py +++ /dev/null @@ -1,26 +0,0 @@ -class Playlist: -    def __init__(self, callback): -        self._songList = list() -        self._currentSong = None -        self._setSongCallback = callback - -    def addSong(self, path): -        self._songList.append(path) - -    def setCurrentSong(self, index): -        if index >= 0 and index < len(self._songList): -            self._currentSong = index -            self._setSongCallback(self._songList[index]) -     -    def getCurrentSong(self): -        index = self._currentSong -        return self._songList[index] if index is not None else None - -    def getCurrentSongIndex(self): -        return self._currentSong - -    def getSongs(self): -        return self._songList - -    def clear(self): -        self.__init__(self._setSongCallback) diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py index 0896b22..a4dabc0 100644 --- a/solo-tool-project/src/solo_tool/session_manager.py +++ b/solo-tool-project/src/solo_tool/session_manager.py @@ -1,26 +1,25 @@  import json -def loadSession(file, playlist, abController): +def loadSession(file, songList, abController):      jsonStr = file.read()      session = json.loads(jsonStr) -    playlist.clear() +    songList.clear()      abController.clear()      for entry in session:          songPath = entry["path"]          abLimits = entry["ab_limits"] -        playlist.addSong(songPath) +        songList.append(songPath)          if abLimits is not None:              for l in abLimits:                  abController.storeLimits(l[0], l[1], songPath) -def saveSession(file, playlist, abController): -    songs = playlist.getSongs() +def saveSession(file, songList, abController):      session = list() -    for s in songs: +    for s in songList:          entry = {              "path": s,              "ab_limits" : abController.getStoredLimits(s) 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()  | 
