diff --git a/app/musicmuster.py b/app/musicmuster.py index 5f9a79e..1135f3a 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -232,6 +232,7 @@ class Window(QMainWindow, Ui_MainWindow): self.timer1000.start(1000) self.signals = MusicMusterSignals() self.connect_signals_slots() + self.load_last_playlists() def about(self) -> None: """Get git tag and database name""" @@ -540,6 +541,7 @@ class Window(QMainWindow, Ui_MainWindow): self.btnStop.clicked.connect(self.stop) self.hdrCurrentTrack.clicked.connect(self.show_current) self.hdrNextTrack.clicked.connect(self.show_next) + self.tabPlaylist.currentChanged.connect(self.tab_change) self.tabPlaylist.tabCloseRequested.connect(self.close_tab) self.tabBar = self.tabPlaylist.tabBar() self.txtSearch.textChanged.connect(self.search_playlist_text_changed) @@ -1419,6 +1421,13 @@ class Window(QMainWindow, Ui_MainWindow): # Enable controls self.enable_play_next_controls() + def tab_change(self): + """Called when active tab changed""" + + tab = self.active_tab() + if tab: + tab.resizeRowsToContents() + def tick_10ms(self) -> None: """ Called every 10ms diff --git a/app/playlists.py b/app/playlists.py index 24ab751..4dc1fb6 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -188,7 +188,7 @@ class PlaylistTab(QTableView): # Connect signals self.signals = MusicMusterSignals() - self.signals.resize_rows_signal.connect(self.resizeRowsToContents) + self.signals.resize_rows_signal.connect(self.resize_rows) self.signals.span_cells_signal.connect(self._span_cells) # Selection model @@ -198,9 +198,15 @@ class PlaylistTab(QTableView): # Load playlist rows self.setModel(self.proxy_model) self._set_column_widths() - self.resizeRowsToContents() + # Stretch last column *after* setting column widths which is + # *much* faster + h_header = self.horizontalHeader() + if isinstance(h_header, QHeaderView): + h_header.sectionResized.connect(self._column_resize) + h_header.setStretchLastSection(True) + QTimer.singleShot(0, lambda: self.resizeRowsToContents()) - # ########## Overrident class functions ########## + # ########## Overridden class functions ########## def closeEditor( self, editor: QWidget | None, hint: QAbstractItemDelegate.EndEditHint @@ -582,9 +588,19 @@ class PlaylistTab(QTableView): def _rescan(self, row_number: int) -> None: """Rescan track""" - self.data_model.rescan_track(row_number) + self.source_model.rescan_track(row_number) self.clear_selection() + def resize_rows(self, playlist_id: int) -> None: + """ + If playlist_id is us, resize rows + """ + + if playlist_id != self.playlist_id: + return + + self.resizeRowsToContents() + def scroll_to_top(self, row_number: int) -> None: """ Scroll to put passed row_number Config.SCROLL_TOP_MARGIN from the @@ -677,19 +693,13 @@ class PlaylistTab(QTableView): # Last column is set to stretch so ignore it here with Session() as session: - for column_number in range(header.count() - 2): + for column_number in range(header.count() - 1): attr_name = f"playlist_col_{column_number}_width" record = Settings.get_int_settings(session, attr_name) if record.f_int is not None: self.setColumnWidth(column_number, record.f_int) else: self.setColumnWidth(column_number, Config.DEFAULT_COLUMN_WIDTH) - # Stretch last column *after* setting column widths which is - # *much* faster - h_header = self.horizontalHeader() - if isinstance(h_header, QHeaderView): - h_header.sectionResized.connect(self._column_resize) - h_header.setStretchLastSection(True) def set_row_as_next_track(self) -> None: """