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
+
+