Fix select all (un)played tracks
This commit is contained in:
parent
9397adee03
commit
ca1b11b545
@ -329,6 +329,8 @@ class PlaylistTab(QTableWidget):
|
||||
|
||||
# Put an item in COL_USERDATA for later
|
||||
item: QTableWidgetItem = QTableWidgetItem()
|
||||
# Add row metadata
|
||||
item.setData(self.ROW_METADATA, 0)
|
||||
self.setItem(row, self.COL_USERDATA, item)
|
||||
|
||||
# Add track details to columns
|
||||
@ -1082,11 +1084,19 @@ class PlaylistTab(QTableWidget):
|
||||
note = Notes.get_by_id(session, note_id)
|
||||
return note
|
||||
|
||||
def _get_played_track_rows(self) -> Optional[List[int]]:
|
||||
def _get_played_track_rows(self) -> List[int]:
|
||||
"""Return rows marked as played, or None"""
|
||||
|
||||
return self._meta_search(RowMeta.PLAYED, one=False)
|
||||
|
||||
def _get_unplayed_track_rows(self) -> Optional[List[int]]:
|
||||
"""Return rows marked as unplayed, or None"""
|
||||
|
||||
unplayed_rows: Set[int] = set(self._meta_notset(RowMeta.PLAYED))
|
||||
notes_rows: Set[int] = set(self._get_notes_rows())
|
||||
|
||||
return list(unplayed_rows - notes_rows)
|
||||
|
||||
def _get_row_start_time(self, row: int) -> Optional[datetime]:
|
||||
try:
|
||||
if self.item(row, self.COL_START_TIME):
|
||||
@ -1232,7 +1242,8 @@ class PlaylistTab(QTableWidget):
|
||||
|
||||
matches = []
|
||||
for row in range(self.rowCount()):
|
||||
if self._meta_get(row):
|
||||
row_meta = self._meta_get(row)
|
||||
if row_meta is not None:
|
||||
if not self._meta_get(row) & (1 << metadata):
|
||||
matches.append(row)
|
||||
|
||||
@ -1355,15 +1366,15 @@ class PlaylistTab(QTableWidget):
|
||||
|
||||
# Need to allow multiple rows to be selected
|
||||
self.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
|
||||
notes_rows: List[int] = self._get_notes_rows()
|
||||
self.clearSelection()
|
||||
|
||||
played_rows: List[int] = self._get_played_track_rows()
|
||||
for row in range(self.rowCount()):
|
||||
if row in notes_rows:
|
||||
continue
|
||||
if row in played_rows == played:
|
||||
self.selectRow(row)
|
||||
if played:
|
||||
rows = self. _get_played_track_rows()
|
||||
else:
|
||||
rows = self._get_unplayed_track_rows()
|
||||
|
||||
for row in rows:
|
||||
self.selectRow(row)
|
||||
|
||||
# Reset extended selection
|
||||
self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user