diff --git a/app/musicmuster.py b/app/musicmuster.py index 60277c4..267712c 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -138,8 +138,11 @@ class Window(QMainWindow, Ui_MainWindow): self.actionPlay_next.triggered.connect(self.play_next) self.actionSearch_database.triggered.connect(self.search_database) self.actionSelect_next_track.triggered.connect(self.select_next_track) + self.actionSelect_played_tracks.triggered.connect(self.select_played) self.actionSelect_previous_track.triggered.connect( self.select_previous_track) + self.actionSelect_unplayed_tracks.triggered.connect( + self.select_unplayed) self.actionSetNext.triggered.connect(self.set_next_track) self.actionSkip_next.triggered.connect(self.play_next) self.actionSkipToEnd.triggered.connect(self.test_skip_to_end) @@ -429,6 +432,11 @@ class Window(QMainWindow, Ui_MainWindow): self.visible_playlist_tab().select_next_track() + def select_played(self): + "Select all played tracks in playlist" + + self.visible_playlist_tab().select_played_tracks() + def select_previous_track(self): "Select previous or first track in playlist" @@ -449,6 +457,11 @@ class Window(QMainWindow, Ui_MainWindow): self.next_track = Tracks.get_track(session, next_track_id) self.update_headers() + def select_unplayed(self): + "Select all unplayed tracks in playlist" + + self.visible_playlist_tab().select_unplayed_tracks() + def show_warning(self, title, msg): "Display a warning to user" diff --git a/app/playlists.py b/app/playlists.py index 3e61596..d7d5956 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -425,6 +425,21 @@ class PlaylistTab(QTableWidget): self.selectRow(row) + def select_played_tracks(self): + "Select all played tracks in playlist" + + # Need to allow multiple rows to be selected + self.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + + self.clearSelection() + + for row in range(self.rowCount()): + if self._get_row_id(row) in self.played_tracks: + self.selectRow(row) + + # Reset extended selection + self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + def select_previous_track(self): """ Select previous or last track. Don't select notes. Wrap at first row. @@ -458,6 +473,25 @@ class PlaylistTab(QTableWidget): self.selectRow(row) + def select_unplayed_tracks(self): + "Select all unplayed tracks in playlist" + + # Need to allow multiple rows to be selected + self.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + notes_rows = self._meta_get_notes() + + self.clearSelection() + + for row in range(self.rowCount()): + if row in notes_rows: + continue + if self._get_row_id(row) in self.played_tracks: + continue + self.selectRow(row) + + # Reset extended selection + self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + def set_selected_as_next(self): """ Sets the selected track as the next track. diff --git a/app/ui/main_window.ui b/app/ui/main_window.ui index df2b81b..7609dcc 100644 --- a/app/ui/main_window.ui +++ b/app/ui/main_window.ui @@ -757,6 +757,8 @@ border: 1px solid rgb(85, 87, 83); + + @@ -977,6 +979,16 @@ border: 1px solid rgb(85, 87, 83); K + + + Select played tracks + + + + + Select unplayed tracks + +