Put preview track details in status bar

This commit is contained in:
Keith Edmunds 2025-03-06 14:26:47 +00:00
parent 63b1d0dff4
commit 61b00d8531

View File

@ -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"""