Delete multiple rows

Fixes #22
This commit is contained in:
Keith Edmunds 2021-08-22 16:42:33 +01:00
parent d9ccaf7caa
commit 70d986f4ac

View File

@ -183,7 +183,7 @@ class PlaylistTab(QTableWidget):
act_rescan.triggered.connect(lambda: self._rescan(row))
self.menu.addSeparator()
act_delete = self.menu.addAction('Delete')
act_delete.triggered.connect(lambda: self._delete_row(row))
act_delete.triggered.connect(self._delete_rows)
act_info = self.menu.addAction('Info')
act_info.triggered.connect(lambda: self._info_row(row))
@ -624,11 +624,17 @@ class PlaylistTab(QTableWidget):
self.editing_cell = False
self.master_process.enable_play_next_controls()
def _delete_row(self, row):
"Delete row"
def _delete_rows(self):
"Delete mutliple rows"
DEBUG(f"playlist._delete_row({row})")
DEBUG("playlist._delete_rows()")
rows = sorted(set(item.row() for item in self.selectedItems()))
rows_to_delete = []
notes = self._meta_get_notes()
with Session() as session:
for row in rows:
if row == self._meta_get_current():
show_warning("Silly", "Can't delete playing track")
return
@ -636,7 +642,6 @@ class PlaylistTab(QTableWidget):
show_warning("Safety", "Can't delete next track")
return
with Session() as session:
title = self.item(row, self.COL_TITLE).text()
msg = QMessageBox(self)
@ -645,13 +650,19 @@ class PlaylistTab(QTableWidget):
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
msg.setDefaultButton(QMessageBox.Cancel)
msg.setWindowTitle("Delete row")
# Store list of notes
if msg.exec() == QMessageBox.Yes:
id = self._get_row_id(row)
if row in self._meta_get_notes():
rows_to_delete.append(row)
# delete in reverse row order so row numbers don't
# change
for del_row in sorted(rows_to_delete, reverse=True):
id = self._get_row_id(del_row)
if del_row in notes:
Notes.delete_note(session, id)
else:
PlaylistTracks.remove_track(session, self.id, row)
self.removeRow(row)
PlaylistTracks.remove_track(session, self.id, del_row)
self.removeRow(del_row)
self._save_playlist(session)
self._repaint()