diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 3124b9790..a65009678 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -33,6 +33,8 @@ #include #include +const char* PlaylistTabBar::kSettingsGroup = "PlaylistTabBar"; + PlaylistTabBar::PlaylistTabBar(QWidget *parent) : QTabBar(parent), manager_(NULL), @@ -94,7 +96,7 @@ void PlaylistTabBar::mouseReleaseEvent(QMouseEvent* e) { if (e->button() == Qt::MidButton) { // Update menu index menu_index_ = tabAt(e->pos()); - Close(false); + Close(); } QTabBar::mouseReleaseEvent(e); @@ -151,12 +153,17 @@ void PlaylistTabBar::HideEditor() { manager_->SetCurrentPlaylist(manager_->current()->id()); } -void PlaylistTabBar::Close(bool ask_for_delete) { +void PlaylistTabBar::Close() { if (menu_index_ == -1) return; const int playlist_id = tabData(menu_index_).toInt(); + QSettings s; + s.beginGroup(kSettingsGroup); + + const bool ask_for_delete = s.value("warm_close_playlist", true).toBool(); + if (ask_for_delete && !manager_->IsPlaylistFavorite(playlist_id)) { if (QMessageBox::question(this, tr("Remove playlist"), diff --git a/src/playlist/playlisttabbar.h b/src/playlist/playlisttabbar.h index 4374729d7..63ad8146e 100644 --- a/src/playlist/playlisttabbar.h +++ b/src/playlist/playlisttabbar.h @@ -34,6 +34,7 @@ public: PlaylistTabBar(QWidget *parent = 0); static const int kDragHoverTimeout = 500; + static const char* kSettingsGroup; void SetActions(QAction* new_playlist, QAction* load_playlist); void SetManager(PlaylistManager* manager); @@ -76,7 +77,7 @@ private slots: void Rename(); void RenameInline(); void HideEditor(); - void Close(bool ask_for_delete = true); + void Close(); void CloseFromTabIndex(int index); // Used when playlist's favorite flag isn't changed from the favorite widget // (e.g. from the playlistlistcontainer): will update the favorite widget diff --git a/src/ui/behavioursettingspage.cpp b/src/ui/behavioursettingspage.cpp index f11a95cef..89d860fa4 100644 --- a/src/ui/behavioursettingspage.cpp +++ b/src/ui/behavioursettingspage.cpp @@ -19,6 +19,7 @@ #include "mainwindow.h" #include "ui_behavioursettingspage.h" #include "playlist/playlist.h" +#include "playlist/playlisttabbar.h" #include @@ -124,6 +125,10 @@ void BehaviourSettingsPage::Load() { s.beginGroup(Playlist::kSettingsGroup); ui_->b_grey_out_deleted_->setChecked(s.value("greyoutdeleted", false).toBool()); s.endGroup(); + + s.beginGroup(PlaylistTabBar::kSettingsGroup); + ui_->b_warm_close_playlist_->setChecked(s.value("warm_close_playlist", true).toBool()); + s.endGroup(); } void BehaviourSettingsPage::Save() { @@ -159,6 +164,10 @@ void BehaviourSettingsPage::Save() { s.beginGroup(Playlist::kSettingsGroup); s.setValue("greyoutdeleted", ui_->b_grey_out_deleted_->isChecked()); s.endGroup(); + + s.beginGroup(PlaylistTabBar::kSettingsGroup); + s.setValue("warm_close_playlist", ui_->b_warm_close_playlist_->isChecked()); + s.endGroup(); } void BehaviourSettingsPage::ShowTrayIconToggled(bool on) { diff --git a/src/ui/behavioursettingspage.ui b/src/ui/behavioursettingspage.ui index d9167a389..72266e856 100644 --- a/src/ui/behavioursettingspage.ui +++ b/src/ui/behavioursettingspage.ui @@ -31,6 +31,20 @@ + + + + Qt::Horizontal + + + + + + + Warm me when closing a playlist tab + + +