mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Prompt user to save/discard changes upon closing config dialog
Summary: When the configuration dialog is closed with unsaved changes, a message box is prompted to save/discard them or cancel the event. BUG: 391206 Reviewers: #dolphin, elvisangelaccio Reviewed By: #dolphin, elvisangelaccio Subscribers: ngraham, elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D19904
This commit is contained in:
parent
3dec3ee092
commit
017cd2322a
|
@ -32,12 +32,14 @@
|
||||||
#include <KAuthorized>
|
#include <KAuthorized>
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
#include <KWindowConfig>
|
#include <KWindowConfig>
|
||||||
|
#include <KMessageBox>
|
||||||
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
DolphinSettingsDialog::DolphinSettingsDialog(const QUrl& url, QWidget* parent) :
|
DolphinSettingsDialog::DolphinSettingsDialog(const QUrl& url, QWidget* parent) :
|
||||||
KPageDialog(parent),
|
KPageDialog(parent),
|
||||||
m_pages()
|
m_pages(),
|
||||||
|
m_unsavedChanges(false)
|
||||||
|
|
||||||
{
|
{
|
||||||
const QSize minSize = minimumSize();
|
const QSize minSize = minimumSize();
|
||||||
|
@ -121,6 +123,7 @@ DolphinSettingsDialog::~DolphinSettingsDialog()
|
||||||
void DolphinSettingsDialog::enableApply()
|
void DolphinSettingsDialog::enableApply()
|
||||||
{
|
{
|
||||||
buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(true);
|
buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(true);
|
||||||
|
m_unsavedChanges = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinSettingsDialog::applySettings()
|
void DolphinSettingsDialog::applySettings()
|
||||||
|
@ -139,6 +142,7 @@ void DolphinSettingsDialog::applySettings()
|
||||||
settings->save();
|
settings->save();
|
||||||
}
|
}
|
||||||
buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(false);
|
buttonBox()->button(QDialogButtonBox::Apply)->setEnabled(false);
|
||||||
|
m_unsavedChanges = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinSettingsDialog::restoreDefaults()
|
void DolphinSettingsDialog::restoreDefaults()
|
||||||
|
@ -148,6 +152,35 @@ void DolphinSettingsDialog::restoreDefaults()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinSettingsDialog::closeEvent(QCloseEvent* event)
|
||||||
|
{
|
||||||
|
if (!m_unsavedChanges) {
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto response = KMessageBox::warningYesNoCancel(this,
|
||||||
|
i18n("You have have unsaved changes. Do you want to apply the changes or discard them?"),
|
||||||
|
i18n("Warning"),
|
||||||
|
KStandardGuiItem::save(),
|
||||||
|
KStandardGuiItem::discard(),
|
||||||
|
KStandardGuiItem::cancel());
|
||||||
|
switch (response) {
|
||||||
|
case KMessageBox::Yes:
|
||||||
|
applySettings();
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case KMessageBox::No:
|
||||||
|
event->accept();
|
||||||
|
break;
|
||||||
|
case KMessageBox::Cancel:
|
||||||
|
event->ignore();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SettingsPageBase *DolphinSettingsDialog::createTrashSettingsPage(QWidget *parent)
|
SettingsPageBase *DolphinSettingsDialog::createTrashSettingsPage(QWidget *parent)
|
||||||
{
|
{
|
||||||
if (!KAuthorized::authorizeControlModule(QStringLiteral("kcmtrash.desktop"))) {
|
if (!KAuthorized::authorizeControlModule(QStringLiteral("kcmtrash.desktop"))) {
|
||||||
|
|
|
@ -48,10 +48,14 @@ private slots:
|
||||||
void applySettings();
|
void applySettings();
|
||||||
void restoreDefaults();
|
void restoreDefaults();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static SettingsPageBase *createTrashSettingsPage(QWidget *parent);
|
static SettingsPageBase *createTrashSettingsPage(QWidget *parent);
|
||||||
|
|
||||||
QList<SettingsPageBase*> m_pages;
|
QList<SettingsPageBase*> m_pages;
|
||||||
|
bool m_unsavedChanges;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue