From eec767406baec0884065f7a3f4d04e4fa495e425 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sat, 4 Jan 2020 06:11:21 +0100 Subject: [PATCH] Add confirmation before clearing playlists with more than 500 songs --- src/core/mainwindow.cpp | 21 ++++++++++++++++++++- src/core/mainwindow.h | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 6105c5e84..3596b20c8 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -405,7 +405,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), SLOT(StopAfterCurrent())); connect(ui_->action_mute, SIGNAL(triggered()), app_->player(), SLOT(Mute())); - connect(ui_->action_clear_playlist, SIGNAL(triggered()), app_->playlist_manager(), SLOT(ClearCurrent())); + connect(ui_->action_clear_playlist, SIGNAL(triggered()), SLOT(PlaylistClearCurrent())); connect(ui_->action_remove_duplicates, SIGNAL(triggered()), app_->playlist_manager(), SLOT(RemoveDuplicatesCurrent())); connect(ui_->action_remove_unavailable, SIGNAL(triggered()), app_->playlist_manager(), SLOT(RemoveUnavailableCurrent())); connect(ui_->action_remove_from_playlist, SIGNAL(triggered()), SLOT(PlaylistRemoveCurrent())); @@ -1960,6 +1960,25 @@ void MainWindow::PlaylistRemoveCurrent() { ui_->playlist->view()->RemoveSelected(false); } +void MainWindow::PlaylistClearCurrent() { + + if (app_->playlist_manager()->current()->rowCount() > Playlist::kUndoItemLimit) { + QMessageBox messagebox(QMessageBox::Warning, tr("Clear playlist"), tr("Playlist has %1 songs, too large to undo, are you sure you want to clear the playlist?").arg(app_->playlist_manager()->current()->rowCount()), QMessageBox::Ok|QMessageBox::Cancel); + messagebox.setTextFormat(Qt::RichText); + int result = messagebox.exec(); + switch (result) { + case QMessageBox::Ok: + break; + case QMessageBox::Cancel: + default: + return; + } + } + + app_->playlist_manager()->ClearCurrent(); + +} + void MainWindow::PlaylistEditFinished(const QModelIndex &index) { if (index == playlist_menu_index_) SelectionSetValue(); } diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index 21ce05752..2e3ab64f9 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -155,6 +155,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void PlaylistSkip(); void PlaylistRemoveCurrent(); void PlaylistEditFinished(const QModelIndex& index); + void PlaylistClearCurrent(); void RescanSongs(); void EditTracks(); void EditTagDialogAccepted();