From 3d83de20c25b4c3ea578f04eb834da4dfa613280 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 18 Aug 2024 11:13:20 +0100 Subject: [PATCH] Show Wikipedia/Songfacts on next track if none selected --- app/musicmuster.py | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index a30613c..950f340 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -925,27 +925,19 @@ class Window(QMainWindow, Ui_MainWindow): Display songfacts page for title in highlighted row """ - row_number = self.active_tab().source_model_selected_row_number() - if row_number is None: - return - - track_info = self.active_proxy_model().get_row_info(row_number) - if track_info is None: + track_info = self.selected_or_next_track_info() + if not track_info: return self.signals.search_songfacts_signal.emit(track_info.title) def lookup_row_in_wikipedia(self) -> None: """ - Display Wikipedia page for title in highlighted row + Display Wikipedia page for title in highlighted row or next track """ - row_number = self.active_tab().source_model_selected_row_number() - if row_number is None: - return - - track_info = self.active_proxy_model().get_row_info(row_number) - if track_info is None: + track_info = self.selected_or_next_track_info() + if not track_info: return self.signals.search_wikipedia_signal.emit(track_info.title) @@ -1502,6 +1494,26 @@ class Window(QMainWindow, Ui_MainWindow): self.active_proxy_model().set_incremental_search(self.txtSearch.text()) + def selected_or_next_track_info(self) -> Optional[RowAndTrack]: + """ + Return RowAndTrack info for selected track. If no selected track, return for + next track. If no next track, return None. + """ + + row_number = self.active_tab().source_model_selected_row_number() + if row_number is None: + if track_sequence.next: + if track_sequence.next.track_id: + row_number = track_sequence.next.row_number + if row_number is None: + return None + + track_info = self.active_proxy_model().get_row_info(row_number) + if track_info is None: + return None + + return track_info + def select_next_row(self) -> None: """Select next or first row in playlist"""