diff options
Diffstat (limited to 'solo-tool-project/src/solo_tool')
-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) |