diff --git a/app/musicmuster.py b/app/musicmuster.py index 61fe8bd..cd0c312 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -693,7 +693,6 @@ class PreviewManager: mixer.init() self.intro: Optional[int] = None self.path: str = "" - self.row_number: Optional[int] = None self.start_time: Optional[dt.datetime] = None self.track_id: int = 0 @@ -767,22 +766,14 @@ class PreviewManager: self.intro = ms - def set_track_info(self, info: TrackInfo) -> None: - self.track_id = info.track_id - self.row_number = info.row_number - - with db.Session() as session: - track = session.get(Tracks, self.track_id) - if not track: - raise ValueError( - f"PreviewManager: unable to retreive track {self.track_id=}" - ) - self.intro = track.intro - self.path = track.path + def set_track_info(self, track_id: int, track_intro: int, track_path: str) -> None: + self.track_id = track_id + self.intro = track_intro + self.path = track_path # Check file readable if file_is_unreadable(self.path): - raise ValueError(f"PreviewManager.__init__: {track.path=} unreadable") + raise ValueError(f"PreviewManager.__init__: {track_path=} unreadable") mixer.music.load(self.path) @@ -790,7 +781,6 @@ class PreviewManager: mixer.music.stop() mixer.music.unload() self.path = "" - self.row_number = None self.track_id = 0 self.start_time = None @@ -2263,10 +2253,25 @@ class Window(QMainWindow): return if not track_info: return - self.preview_manager.set_track_info(track_info) - self.preview_manager.play() + with db.Session() as session: + track = session.get(Tracks, track_info.track_id) + if not track: + raise ApplicationError( + f"musicmuster.preview: unable to retreive track {track_info.track_id=}" + ) + self.preview_manager.set_track_info( + track_id=track.id, + track_path=track.path, + track_intro=track.intro + ) + self.preview_manager.play() + self.show_status_message( + f"Preview: {track.title} / {track.artist} (row {track_info.row_number})", + 0 + ) else: self.preview_manager.stop() + self.show_status_message("", 0) def preview_arm(self): """Manager arm button for setting intro length""" @@ -2528,10 +2533,14 @@ class Window(QMainWindow): def show_status_message(self, message: str, timing: int) -> None: """ Show status message in status bar for timing milliseconds + Clear message if message is null string """ if self.statusbar: - self.statusbar.showMessage(message, timing) + if message: + self.statusbar.showMessage(message, timing) + else: + self.statusbar.clearMessage() def show_track(self, playlist_track: RowAndTrack) -> None: """Scroll to show track in plt"""