Select and move (un)played tracks. Fixes #4

This commit is contained in:
Keith Edmunds 2021-06-10 15:24:31 +01:00
parent 73879c6a99
commit a80dc3f165
3 changed files with 59 additions and 0 deletions

View File

@ -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"

View File

@ -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.

View File

@ -757,6 +757,8 @@ border: 1px solid rgb(85, 87, 83);</string>
<addaction name="actionAdd_file"/>
<addaction name="action_Clear_selection"/>
<addaction name="separator"/>
<addaction name="actionSelect_unplayed_tracks"/>
<addaction name="actionSelect_played_tracks"/>
<addaction name="actionMoveSelected"/>
<addaction name="separator"/>
<addaction name="actionExport_playlist"/>
@ -977,6 +979,16 @@ border: 1px solid rgb(85, 87, 83);</string>
<string>K</string>
</property>
</action>
<action name="actionSelect_played_tracks">
<property name="text">
<string>Select played tracks</string>
</property>
</action>
<action name="actionSelect_unplayed_tracks">
<property name="text">
<string>Select unplayed tracks</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc"/>