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