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.timer1000.start(1000)
self.signals = MusicMusterSignals() self.signals = MusicMusterSignals()
self.connect_signals_slots() self.connect_signals_slots()
self.load_last_playlists()
def about(self) -> None: def about(self) -> None:
"""Get git tag and database name""" """Get git tag and database name"""
@ -540,6 +541,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.btnStop.clicked.connect(self.stop) self.btnStop.clicked.connect(self.stop)
self.hdrCurrentTrack.clicked.connect(self.show_current) self.hdrCurrentTrack.clicked.connect(self.show_current)
self.hdrNextTrack.clicked.connect(self.show_next) self.hdrNextTrack.clicked.connect(self.show_next)
self.tabPlaylist.currentChanged.connect(self.tab_change)
self.tabPlaylist.tabCloseRequested.connect(self.close_tab) self.tabPlaylist.tabCloseRequested.connect(self.close_tab)
self.tabBar = self.tabPlaylist.tabBar() self.tabBar = self.tabPlaylist.tabBar()
self.txtSearch.textChanged.connect(self.search_playlist_text_changed) self.txtSearch.textChanged.connect(self.search_playlist_text_changed)
@ -1419,6 +1421,13 @@ class Window(QMainWindow, Ui_MainWindow):
# Enable controls # Enable controls
self.enable_play_next_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: def tick_10ms(self) -> None:
""" """
Called every 10ms Called every 10ms

View File

@ -188,7 +188,7 @@ class PlaylistTab(QTableView):
# Connect signals # Connect signals
self.signals = MusicMusterSignals() 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) self.signals.span_cells_signal.connect(self._span_cells)
# Selection model # Selection model
@ -198,9 +198,15 @@ class PlaylistTab(QTableView):
# Load playlist rows # Load playlist rows
self.setModel(self.proxy_model) self.setModel(self.proxy_model)
self._set_column_widths() 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( def closeEditor(
self, editor: QWidget | None, hint: QAbstractItemDelegate.EndEditHint self, editor: QWidget | None, hint: QAbstractItemDelegate.EndEditHint
@ -582,9 +588,19 @@ class PlaylistTab(QTableView):
def _rescan(self, row_number: int) -> None: def _rescan(self, row_number: int) -> None:
"""Rescan track""" """Rescan track"""
self.data_model.rescan_track(row_number) self.source_model.rescan_track(row_number)
self.clear_selection() 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: def scroll_to_top(self, row_number: int) -> None:
""" """
Scroll to put passed row_number Config.SCROLL_TOP_MARGIN from the 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 # Last column is set to stretch so ignore it here
with Session() as session: 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" attr_name = f"playlist_col_{column_number}_width"
record = Settings.get_int_settings(session, attr_name) record = Settings.get_int_settings(session, attr_name)
if record.f_int is not None: if record.f_int is not None:
self.setColumnWidth(column_number, record.f_int) self.setColumnWidth(column_number, record.f_int)
else: else:
self.setColumnWidth(column_number, Config.DEFAULT_COLUMN_WIDTH) 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: def set_row_as_next_track(self) -> None:
""" """