From 62364fdaf1638f4965c434e7824ca750f977238b Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 17 Oct 2021 12:08:13 +0100 Subject: [PATCH] Don't automatically select previously played tracks Fixes #89 --- app/playlists.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/app/playlists.py b/app/playlists.py index 43369dc..23132f4 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -405,9 +405,15 @@ class PlaylistTab(QTableWidget): scroll_to = self.item(current_row, self.COL_INDEX) self.scrollToItem(scroll_to, QAbstractItemView.PositionAtCenter) - # Get next track - next_track_row = self._find_next_track_row() - next_track_id = self._set_next(next_track_row) + # Get next track, but skip tracks already played + search_starting_row = current_row + 1 + while True: + next_track_row = self._find_next_track_row(search_starting_row) + next_track_id = self._set_next(next_track_row) + if next_track_id not in self.played_tracks: + break + search_starting_row += 1 + self._repaint() return next_track_id @@ -813,7 +819,7 @@ class PlaylistTab(QTableWidget): if column in [self.COL_TITLE, self.COL_ARTIST]: self.editItem(item) - def _find_next_track_row(self): + def _find_next_track_row(self, starting_row=None): """ Find next track to play. @@ -823,13 +829,14 @@ class PlaylistTab(QTableWidget): """ found_next_track = False - current_row = self._meta_get_current() - if current_row is not None: - start = current_row + 1 - else: - start = 0 + if starting_row is None: + current_row = self._meta_get_current() + if current_row is not None: + starting_row = current_row + 1 + else: + starting_row = 0 notes_rows = self._meta_get_notes() - for row in range(start, self.rowCount()): + for row in range(starting_row, self.rowCount()): if row in notes_rows: continue found_next_track = True