diff options
Diffstat (limited to 'solo-tool-project/src')
| -rw-r--r-- | solo-tool-project/src/solo_tool/notifier.py | 2 | ||||
| -rw-r--r-- | solo-tool-project/src/solo_tool/solo_tool.py | 29 | 
2 files changed, 19 insertions, 12 deletions
| diff --git a/solo-tool-project/src/solo_tool/notifier.py b/solo-tool-project/src/solo_tool/notifier.py index ac1c736..5b3539c 100644 --- a/solo-tool-project/src/solo_tool/notifier.py +++ b/solo-tool-project/src/solo_tool/notifier.py @@ -5,7 +5,7 @@ class Notifier:      CURRENT_SONG_EVENT = 3      SONG_LIST_EVENT = 4      CURRENT_KEY_POINT_EVENT = 5 -    KEY_POINTS_EVENT = 6 +    KEY_POINT_LIST_EVENT = 6      def __init__(self, player):          self._callbacks = dict() diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index bc20013..0489517 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -13,12 +13,18 @@ class SoloTool:          self._keyPoint = None      def _updateSong(self, index): +        previousSong = self._song          self._song = index -        path = self._songs[index] -        self._player.setCurrentSong(path) -        self._keyPoint = 0.0 +        self._player.setCurrentSong(self._songs[index])          self._notifier.notify(Notifier.CURRENT_SONG_EVENT, index) -        self._notifier.notify(Notifier.CURRENT_KEY_POINT_EVENT, index) + +        previousKp = self._keyPoint +        self._keyPoint = self.keyPoints[0] if len(self.keyPoints) > 0 else 0.0 +        if previousKp != self._keyPoint: +            self._notifier.notify(Notifier.CURRENT_KEY_POINT_EVENT, self._keyPoint) + +        if previousSong is None or self._keyPoints[previousSong] != self._keyPoints[index]: +            self._notifier.notify(Notifier.KEY_POINT_LIST_EVENT, self.keyPoints)      @staticmethod      def _keyPointValid(kp: float) -> bool: @@ -61,8 +67,8 @@ class SoloTool:      def keyPoints(self, new: list[float]) -> None:          if new is not None and self._song is not None:              sanitized = sorted(list(set([p for p in new if SoloTool._keyPointValid(p)]))) -            self._keyPoints[self._song] = sanitized -            self._notifier.notify(Notifier.KEY_POINTS_EVENT, sanitized.copy()) +            self._keyPoints[self._song] = sanitized.copy() +            self._notifier.notify(Notifier.KEY_POINT_LIST_EVENT, self.keyPoints)      @property      def keyPoint(self) -> float: @@ -125,6 +131,12 @@ class SoloTool:      def registerSongListCallback(self, callback):          self._notifier.registerCallback(Notifier.SONG_LIST_EVENT, callback) +    def registerKeyPointSelectionCallback(self, callback): +        self._notifier.registerCallback(Notifier.CURRENT_KEY_POINT_EVENT, callback) + +    def registerKeyPointListCallback(self, callback): +        self._notifier.registerCallback(Notifier.KEY_POINT_LIST_EVENT, callback) +      def registerPlayingStateCallback(self, callback):          self._notifier.registerCallback(Notifier.PLAYING_STATE_EVENT, callback) @@ -134,8 +146,3 @@ class SoloTool:      def registerRateCallback(self, callback):          self._notifier.registerCallback(Notifier.PLAYBACK_RATE_EVENT, callback) -    def registerCurrentKeyPointCallback(self, callback): -        self._notifier.registerCallback(Notifier.CURRENT_KEY_POINT_EVENT, callback) - -    def registerKeyPointsCallback(self, callback): -        self._notifier.registerCallback(Notifier.KEY_POINTS_EVENT, callback) | 
