From b46830f010bac4cee57c3428f3d461c9b3c02433 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Tue, 24 Aug 2021 16:41:00 +0100 Subject: [PATCH] Tab text colours implemented Fixes #61 --- app/musicmuster.py | 53 ++++++++++++++++++++++++++++++++++------------ app/playlists.py | 18 ++++++++++------ 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index 28bb68d..ad1df2a 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -11,7 +11,7 @@ from datetime import datetime, timedelta from log import DEBUG, EXCEPTION from PyQt5.QtCore import Qt, QTimer, QUrl -from PyQt5.QtGui import QFontMetrics, QPainter +from PyQt5.QtGui import QColor, QFontMetrics, QPainter from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView from PyQt5.QtWidgets import ( QApplication, @@ -479,8 +479,6 @@ class Window(QMainWindow, Ui_MainWindow): # Play next track self.current_track = self.next_track - self.set_tab_colour(self.current_track_playlist_tab, - QColor("black")) self.current_track_playlist_tab = self.next_track_playlist_tab self.set_tab_colour(self.current_track_playlist_tab, QColor(Config.COLOUR_CURRENT_TAB)) @@ -505,6 +503,12 @@ class Window(QMainWindow, Ui_MainWindow): else: self.next_track = self.next_track_playlist_tab = None + if self.next_track_playlist_tab and ( + self.current_track_playlist_tab != + self.next_track_playlist_tab): + self.set_tab_colour(self.next_track_playlist_tab, + QColor(Config.COLOUR_NEXT_TAB)) + # Tell database to record it as played self.current_track.update_lastplayed() Playdates.add_playdate(session, self.current_track) @@ -558,18 +562,32 @@ class Window(QMainWindow, Ui_MainWindow): if not next_track_id: next_track_id = ( self.visible_playlist_tab().set_selected_as_next()) - if next_track_id: - if self.next_track_playlist_tab != self.visible_playlist_tab(): - if self.next_track_playlist_tab: - self.next_track_playlist_tab.clear_next() - self.set_tab_colour(self.next_track_playlist_tab, - QColor("black")) - self.next_track_playlist_tab = self.visible_playlist_tab() + if not next_track_id: + return + + # The next track has been selected on the currently-visible + # playlist. However, there may already be a 'next track' + # selected on another playlist that the user is overriding, + # in which case we need to reset that playlist. + if self.next_track_playlist_tab != self.visible_playlist_tab(): + # We need to reset the ex-next-track playlist + if self.next_track_playlist_tab: + self.next_track_playlist_tab.clear_next() + # Reset tab colour if it NOT the current playing tab if (self.next_track_playlist_tab != self.current_track_playlist_tab): self.set_tab_colour(self.next_track_playlist_tab, - QColor(Config.COLOUR_NEXT_TAB)) - self.next_track = Tracks.get_track(session, next_track_id) + QColor(Config.COLOUR_NORMAL_TAB)) + self.next_track_playlist_tab = self.visible_playlist_tab() + # self.next_track_playlist_tab is now set to correct + # playlist + if (self.next_track_playlist_tab != + self.current_track_playlist_tab): + self.set_tab_colour(self.next_track_playlist_tab, + QColor(Config.COLOUR_NEXT_TAB)) + + self.next_track = Tracks.get_track(session, next_track_id) + self.update_headers() def select_unplayed(self): @@ -619,6 +637,13 @@ class Window(QMainWindow, Ui_MainWindow): DEBUG(f"musicmuster.stop_playing({fade=})", True) + if self.current_track_playlist_tab == self.next_track_playlist_tab: + self.set_tab_colour(self.current_track_playlist_tab, + QColor(Config.COLOUR_NEXT_TAB)) + else: + self.set_tab_colour(self.current_track_playlist_tab, + QColor(Config.COLOUR_NORMAL_TAB)) + if not self.music.playing(): DEBUG("musicmuster.stop_playing(): not playing", True) self.end_of_track_actions() @@ -650,7 +675,7 @@ class Window(QMainWindow, Ui_MainWindow): if not self.playing(): return - self.music.set_position(self.get_current_silence_at() - 1000) + self.music.set_position(self.current_track.silence_at - 1000) def test_skip_to_fade(self): "Skip current track to 1 second before fade" @@ -658,7 +683,7 @@ class Window(QMainWindow, Ui_MainWindow): if not self.music.playing(): return - self.music.set_position(self.get_current_fade_at() - 1000) + self.music.set_position(self.current_track.fade_at - 1000) def tick(self): """ diff --git a/app/playlists.py b/app/playlists.py index 5dd231a..0b7c547 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -965,13 +965,17 @@ class PlaylistTab(QTableWidget): return None track_id = self._get_row_id(row) - if track_id: - if self._track_path_is_readable(track_id): - self._meta_set_next(row) - self.master_process.set_next_track(track_id) - else: - self._meta_set_unreadable(row) - track_id = None + if not track_id: + return None + + if self._track_path_is_readable(track_id): + self._meta_set_next(row) + self.master_process.set_next_track(track_id) + else: + self._meta_set_unreadable(row) + track_id = None + self._repaint() + return track_id def _repaint(self, clear_selection=True):