parent
d9ccaf7caa
commit
70d986f4ac
@ -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,34 +624,45 @@ 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()")
|
||||
|
||||
if row == self._meta_get_current():
|
||||
show_warning("Silly", "Can't delete playing track")
|
||||
return
|
||||
elif row == self._meta_get_next():
|
||||
show_warning("Safety", "Can't delete next track")
|
||||
return
|
||||
rows = sorted(set(item.row() for item in self.selectedItems()))
|
||||
rows_to_delete = []
|
||||
notes = self._meta_get_notes()
|
||||
|
||||
with Session() as session:
|
||||
title = self.item(row, self.COL_TITLE).text()
|
||||
for row in rows:
|
||||
if row == self._meta_get_current():
|
||||
show_warning("Silly", "Can't delete playing track")
|
||||
return
|
||||
elif row == self._meta_get_next():
|
||||
show_warning("Safety", "Can't delete next track")
|
||||
return
|
||||
|
||||
msg = QMessageBox(self)
|
||||
msg.setIcon(QMessageBox.Warning)
|
||||
msg.setText(f"Delete '{title}'?")
|
||||
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
|
||||
msg.setDefaultButton(QMessageBox.Cancel)
|
||||
msg.setWindowTitle("Delete row")
|
||||
if msg.exec() == QMessageBox.Yes:
|
||||
id = self._get_row_id(row)
|
||||
if row in self._meta_get_notes():
|
||||
title = self.item(row, self.COL_TITLE).text()
|
||||
|
||||
msg = QMessageBox(self)
|
||||
msg.setIcon(QMessageBox.Warning)
|
||||
msg.setText(f"Delete '{title}'?")
|
||||
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
|
||||
msg.setDefaultButton(QMessageBox.Cancel)
|
||||
msg.setWindowTitle("Delete row")
|
||||
# Store list of notes
|
||||
if msg.exec() == QMessageBox.Yes:
|
||||
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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user