From 4f4408400f1a5ec98efdad0261341b3ea4718c83 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 19 Nov 2023 03:11:03 +0000 Subject: [PATCH] WIP V3: info popup implemented --- app/playlistmodel.py | 7 +++++++ app/playlists.py | 36 +++++++++++++++++------------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/playlistmodel.py b/app/playlistmodel.py index 04b9608..e02a0ea 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -507,6 +507,13 @@ class PlaylistModel(QAbstractTableModel): return duration + def get_row_info(self, row_number: int) -> PlaylistRowData: + """ + Return info about passed row + """ + + return self.playlist_rows[row_number] + def headerData( self, section: int, diff --git a/app/playlists.py b/app/playlists.py index 264a6fe..1a02661 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -576,9 +576,9 @@ class PlaylistTab(QTableView): parent_menu=sort_menu, ) - # Info TODO + # Info if track_row: - self._add_context_menu("Info", lambda: print("Track info")) + self._add_context_menu("Info", lambda: self._info_row(row_number)) # Track path TODO if track_row: @@ -682,25 +682,23 @@ class PlaylistTab(QTableView): # items in that row selected) return sorted(list(set([a.row() for a in self.selectedIndexes()]))) - def _info_row(self, track_id: int) -> None: + def _info_row(self, row_number: int) -> None: """Display popup with info re row""" - with Session() as session: - track = session.get(Tracks, track_id) - if track: - txt = ( - f"Title: {track.title}\n" - f"Artist: {track.artist}\n" - f"Track ID: {track.id}\n" - f"Track duration: {ms_to_mmss(track.duration)}\n" - f"Track bitrate: {track.bitrate}\n" - f"Track fade at: {ms_to_mmss(track.fade_at)}\n" - f"Track silence at: {ms_to_mmss(track.silence_at)}" - "\n\n" - f"Path: {track.path}\n" - ) - else: - txt = f"Can't find {track_id=}" + model = cast(PlaylistModel, self.model()) + prd = model.get_row_info(row_number) + if prd: + txt = ( + f"Title: {prd.title}\n" + f"Artist: {prd.artist}\n" + f"Track ID: {prd.track_id}\n" + f"Track duration: {ms_to_mmss(prd.duration)}\n" + f"Track bitrate: {prd.bitrate}\n" + "\n\n" + f"Path: {prd.path}\n" + ) + else: + txt = f"Can't find info about row{row_number}" info: QMessageBox = QMessageBox(self) info.setIcon(QMessageBox.Icon.Information)