Set colours of tabs correctly.

This commit is contained in:
Keith Edmunds 2023-01-01 14:25:06 +00:00
parent 4edcab1542
commit 74028fadf7
2 changed files with 48 additions and 24 deletions

View File

@ -1054,14 +1054,17 @@ class Window(QMainWindow, Ui_MainWindow):
if self.current_track.playlist_tab != self.next_track.playlist_tab:
self.set_tab_colour(self.current_track.playlist_tab,
QColor(Config.COLOUR_NORMAL_TAB))
# Set current track playlist_tab colour
self.set_tab_colour(self.current_track.playlist_tab,
QColor(Config.COLOUR_CURRENT_TAB))
# Move next track to current track.
# stop_playing() above has called end_of_track_actions()
# which will have populated self.previous_track
self.current_track = self.next_track
self.next_track = PlaylistTrack()
# Set current track playlist_tab colour
self.set_tab_colour(self.current_track.playlist_tab,
QColor(Config.COLOUR_CURRENT_TAB))
# Restore volume if -3dB active
if self.btnDrop3db.isChecked():
self.btnDrop3db.setChecked(False)
@ -1232,7 +1235,7 @@ class Window(QMainWindow, Ui_MainWindow):
"""Scroll to show current track"""
if self.current_track.playlist_tab != self.visible_playlist_tab():
self.tabPlaylist.setCurrentWidget(self.current.track_playlist_tab)
self.tabPlaylist.setCurrentWidget(self.current_track.playlist_tab)
self.tabPlaylist.currentWidget().scroll_current_to_top()
def show_next(self) -> None:
@ -1320,16 +1323,36 @@ class Window(QMainWindow, Ui_MainWindow):
"""
# Clear next track if on another tab
if self.next_track.playlist_tab and (
self.next_track.playlist_tab != playlist_tab):
# Repaint ex-next track playlist to remove highlighting
self.next_track.playlist_tab.update_display(session)
if plr.track_id is None:
return
# Clean up if we are replacing an existing "next track"
original_next_track_playlist_tab = None
if (
# If we already have a next tab lined up and it's neither
# the "new" next tab nor the current track tab then we need
# to reset the tab colour.
self.next_track.playlist_tab and
self.next_track.playlist_tab != playlist_tab and
self.next_track.playlist_tab != self.current_track.playlist_tab
):
original_next_track_playlist_tab = self.next_track.playlist_tab
self.set_tab_colour(self.next_track.playlist_tab,
QColor(Config.COLOUR_NORMAL_TAB))
# Discard now-incorrect next_track PlaylistTrack
self.next_track = PlaylistTrack()
self.next_track.set_plr(session, plr, playlist_tab)
self.next_track.playlist_tab.update_display(session)
if self.current_track.playlist_tab != self.next_track.playlist_tab:
self.set_tab_colour(self.next_track.playlist_tab,
QColor(Config.COLOUR_NEXT_TAB))
# If we've changed playlist tabs for next track, refresh old one
# to remove highligting of next track
if original_next_track_playlist_tab:
original_next_track_playlist_tab.update_display(session)
# Populate footer if we're not currently playing
if not self.playing and self.next_track.track_id:

View File

@ -938,6 +938,8 @@ class PlaylistTab(QTableWidget):
# Set row heights
self.resizeRowsToContents()
self.setColumnWidth(len(columns) - 1, 0)
with Session() as session:
self.update_display(session)
def update_display(self, session: Session) -> None:
"""
@ -1299,12 +1301,24 @@ class PlaylistTab(QTableWidget):
def _get_current_track_row_number(self) -> Optional[int]:
"""Return current track row or None"""
return self.musicmuster.current_track.row_number
current_track = self.musicmuster.current_track
if not current_track.track_id:
return None
if current_track.playlist_tab == self:
return current_track.row_number
else:
return None
def _get_next_track_row_number(self) -> Optional[int]:
"""Return next track row or None"""
return self.musicmuster.next_track.row_number
next_track = self.musicmuster.next_track
if not next_track.track_id:
return None
if next_track.playlist_tab == self:
return next_track.row_number
else:
return None
@staticmethod
def _get_note_text_time(text: str) -> Optional[datetime]:
@ -1501,19 +1515,6 @@ class PlaylistTab(QTableWidget):
)
raise AttributeError(f"Multiple '{metadata}' metadata {matches}")
def _meta_set_attribute(self, row: int, attribute: int) -> None:
"""Set row metadata"""
if row is None:
raise ValueError(f"_meta_set_attribute({row=}, {attribute=})")
current_metadata: int = self._meta_get(row)
if not current_metadata:
new_metadata: int = (1 << attribute)
else:
new_metadata = self._meta_get(row) | (1 << attribute)
self.item(row, USERDATA).setData(self.ROW_FLAGS, new_metadata)
def _move_row(self, session: Session, plr: PlaylistRows,
new_row_number: int) -> None:
"""Move playlist row to new_row_number using parent copy/paste"""