From e3d7ae8e0f59431679bf778632a3f4819ab85ac1 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Wed, 3 Jul 2024 16:11:13 +0100 Subject: [PATCH] WIP: preview forward/back working --- app/musicmuster.py | 24 ++++++++++++++++++++---- app/trackmanager.py | 4 +++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index ffea7fd..3bc8792 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -153,6 +153,24 @@ class PreviewManager: self.path: str = "" self.start_time: Optional[dt.datetime] = None + def back(self, ms: int) -> None: + """ + Move play position back by 'ms' milliseconds + """ + + position = max(0, (self.get_playtime() - ms)) / 1000 + mixer.music.set_pos(position) + self.start_time = dt.datetime.now() - dt.timedelta(seconds=position) + + def forward(self, ms: int) -> None: + """ + Move play position forward by 'ms' milliseconds + """ + + position = (self.get_playtime() + ms) / 1000 + mixer.music.set_pos(position) + self.start_time = dt.datetime.now() - dt.timedelta(seconds=position) + def get_playtime(self) -> int: """ Return time since track started in milliseconds, 0 if not playing @@ -1115,8 +1133,7 @@ class Window(QMainWindow, Ui_MainWindow): def preview_back(self) -> None: """Wind back preview file""" - # TODO - pass + self.preview_manager.back(5000) def preview_end(self) -> None: """Advance preview file to Config.PREVIEW_END_BUFFER_MS before end of intro""" @@ -1127,8 +1144,7 @@ class Window(QMainWindow, Ui_MainWindow): def preview_fwd(self) -> None: """Advance preview file""" - # TODO - pass + self.preview_manager.forward(5000) def preview_mark(self) -> None: """Set intro time""" diff --git a/app/trackmanager.py b/app/trackmanager.py index 1b57028..7312cbb 100644 --- a/app/trackmanager.py +++ b/app/trackmanager.py @@ -328,7 +328,9 @@ class _Music: if self.player: self.player.set_position(position) - def set_volume(self, volume: Optional[int] = None, set_default: bool = True) -> None: + def set_volume( + self, volume: Optional[int] = None, set_default: bool = True + ) -> None: """Set maximum volume used for player""" if not self.player: