diff --git a/src/blackcore/application.h b/src/blackcore/application.h index 469fad288..313bb6add 100644 --- a/src/blackcore/application.h +++ b/src/blackcore/application.h @@ -182,7 +182,7 @@ namespace BlackCore //! Automatically and always save settings void setSettingsAutoSave(bool autoSave); - //! All unsave settings + //! All unsaved settings QStringList getAllUnsavedSettings() const; //! Save all settings diff --git a/src/blackgui/components/applicationclosedialog.cpp b/src/blackgui/components/applicationclosedialog.cpp index cf126aa08..f0e578207 100644 --- a/src/blackgui/components/applicationclosedialog.cpp +++ b/src/blackgui/components/applicationclosedialog.cpp @@ -15,6 +15,8 @@ #include "blackmisc/logmessage.h" #include #include +#include +#include using namespace BlackMisc; using namespace BlackGui; @@ -30,7 +32,11 @@ namespace BlackGui ui->setupUi(this); this->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); this->initSettingsView(); + ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Save)->setDefault(true); + connect(this, &CApplicationCloseDialog::accepted, this, &CApplicationCloseDialog::ps_onAccepted); + connect(this, &CApplicationCloseDialog::rejected, this, &CApplicationCloseDialog::ps_onRejected); + connect(ui->bb_ApplicationCloseDialog, &QDialogButtonBox::clicked, this, &CApplicationCloseDialog::ps_buttonClicked); } CApplicationCloseDialog::~CApplicationCloseDialog() @@ -38,7 +44,7 @@ namespace BlackGui void CApplicationCloseDialog::ps_onAccepted() { - QModelIndexList indexes = ui->lv_UnsavedSettings->selectionModel()->selectedIndexes(); + const QModelIndexList indexes = ui->lv_UnsavedSettings->selectionModel()->selectedIndexes(); if (indexes.isEmpty()) { return; } const QList rows = CGuiUtility::indexToUniqueRows(indexes); QStringList saveKeys; @@ -51,6 +57,20 @@ namespace BlackGui if (msg.isFailure()) { CLogMessage::preformatted(msg); } } + void CApplicationCloseDialog::ps_onRejected() + { + // void + } + + void CApplicationCloseDialog::ps_buttonClicked(QAbstractButton *button) + { + if (button == ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Discard)) + { + ui->lv_UnsavedSettings->clearSelection(); + this->accept(); // fake accept with unselected items + } + } + void CApplicationCloseDialog::initSettingsView() { QStringList settings(CSettingsCache::instance()->getAllUnsavedKeys()); diff --git a/src/blackgui/components/applicationclosedialog.h b/src/blackgui/components/applicationclosedialog.h index e258a5dc3..8ee79cd4a 100644 --- a/src/blackgui/components/applicationclosedialog.h +++ b/src/blackgui/components/applicationclosedialog.h @@ -14,6 +14,7 @@ #include #include +#include namespace Ui { class CApplicationCloseDialog; } namespace BlackGui @@ -38,6 +39,12 @@ namespace BlackGui //! Accepted void ps_onAccepted(); + //! Rejected + void ps_onRejected(); + + //! Button pressed + void ps_buttonClicked(QAbstractButton *button); + private: QScopedPointer ui; QStringList m_settingskeys; diff --git a/src/blackgui/components/applicationclosedialog.ui b/src/blackgui/components/applicationclosedialog.ui index c6acd5fd0..9fd4fb16a 100644 --- a/src/blackgui/components/applicationclosedialog.ui +++ b/src/blackgui/components/applicationclosedialog.ui @@ -49,7 +49,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Abort|QDialogButtonBox::Discard|QDialogButtonBox::Save