diff --git a/app/musicmuster.py b/app/musicmuster.py index 6ae1cb8..9cca58c 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -415,7 +415,10 @@ class Window(QMainWindow, Ui_MainWindow): self.music.play(self.current_track.path) # Update metadata - # TODO is this valid if next track is on different playlist? + # Get next track for this playlist. May be None if there is + # no automatic next track, and may later be overriden by + # user selecting a different track on this or another + # playlist. next_track_id = self.current_track_playlist_tab.play_started() if next_track_id is not None: @@ -423,7 +426,7 @@ class Window(QMainWindow, Ui_MainWindow): self.next_track_playlist_tab = self.current_track_playlist_tab # Check we can read it if not self.file_is_readable(self.next_track.path): - self.show_warning( + helpers.show_warning( "Can't read next track", self.next_track.path) else: @@ -501,11 +504,6 @@ class Window(QMainWindow, Ui_MainWindow): self.visible_playlist_tab().select_unplayed_tracks() - def show_warning(self, title, msg): - "Display a warning to user" - - QMessageBox.warning(None, title, msg, buttons=QMessageBox.Cancel) - def song_info_search(self): """ Open browser tabs for Wikipedia, searching for diff --git a/app/playlists.py b/app/playlists.py index 3173bb1..5cd8d10 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -357,8 +357,10 @@ class PlaylistTab(QTableWidget): # Scroll to put current track in centre scroll_to = self.item(current_row, self.COL_INDEX) self.scrollToItem(scroll_to, QAbstractItemView.PositionAtCenter) - next_track_id = self._mark_next_track() - self._repaint() + + # Get next track + next_track_row = self._find_next_track_row() + next_track_id = self._set_next(next_track_row) return next_track_id def play_stopped(self): @@ -648,13 +650,13 @@ class PlaylistTab(QTableWidget): and pos.y() >= rect.center().y() # noqa W503 ) - def _mark_next_track(self): + def _find_next_track_row(self): """ Find next track to play. If not found, return None. - If found, mark row with metadata and return track_id. + If found, return row number. """ found_next_track = False @@ -667,16 +669,14 @@ class PlaylistTab(QTableWidget): for row in range(start, self.rowCount()): if row in notes_rows: continue - self._meta_set_next(row) found_next_track = True break - if not found_next_track: + if found_next_track: + return row + else: return None - track_id = self._get_row_id(row) - return track_id - def _meta_clear(self, row): "Clear metadata for row" @@ -813,11 +813,13 @@ class PlaylistTab(QTableWidget): track_id = self._get_row_id(row) if track_id: if self._track_path_is_readable(track_id): - self._meta_set_next(self.currentRow()) + self._meta_set_next(row) self.master_process.set_next_track(track_id) else: - self._meta_set_unreadable(self.currentRow()) + self._meta_set_unreadable(row) + track_id = None self._repaint() + return track_id def _repaint(self, clear_selection=True): "Set row colours, fonts, etc"