Ensure all rows correctly resized for height

This commit is contained in:
Keith Edmunds 2023-12-16 02:37:49 +00:00
parent b74007119d
commit f228a371f2
2 changed files with 30 additions and 11 deletions

View File

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

View File

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