From 18be548da241b811194d4e3507cf9d782ec8a198 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE <0xfeedc0de64@gmail.com> Date: Sun, 11 Mar 2018 14:21:43 +0100 Subject: [PATCH] Added isValid() to SettingsWidget --- plugins/weatherplugin/weathersettings.cpp | 8 ++++++++ plugins/weatherplugin/weathersettings.h | 2 ++ zeiterfassungguilib/dialogs/settingsdialog.cpp | 17 ++++++++++++++--- zeiterfassungguilib/settingswidget.h | 2 ++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/plugins/weatherplugin/weathersettings.cpp b/plugins/weatherplugin/weathersettings.cpp index da6f31b..7fc257a 100644 --- a/plugins/weatherplugin/weathersettings.cpp +++ b/plugins/weatherplugin/weathersettings.cpp @@ -15,6 +15,14 @@ WeatherSettings::WeatherSettings(QWidget *parent) : setLayout(layout); } +bool WeatherSettings::isValid(QString &message) const +{ + Q_UNUSED(message) + + qDebug() << "called"; + return true; +} + void WeatherSettings::apply() { qDebug() << "called"; diff --git a/plugins/weatherplugin/weathersettings.h b/plugins/weatherplugin/weathersettings.h index e65e53c..edbc4b2 100644 --- a/plugins/weatherplugin/weathersettings.h +++ b/plugins/weatherplugin/weathersettings.h @@ -11,6 +11,8 @@ class WeatherSettings : public SettingsWidget public: explicit WeatherSettings(QWidget *parent = Q_NULLPTR); + bool isValid(QString &message) const Q_DECL_OVERRIDE; + public Q_SLOTS: void apply() Q_DECL_OVERRIDE; }; diff --git a/zeiterfassungguilib/dialogs/settingsdialog.cpp b/zeiterfassungguilib/dialogs/settingsdialog.cpp index 7df0f0d..57e915e 100644 --- a/zeiterfassungguilib/dialogs/settingsdialog.cpp +++ b/zeiterfassungguilib/dialogs/settingsdialog.cpp @@ -72,10 +72,21 @@ void SettingsDialog::submit() return; } + for(const auto widget : m_settingsWidgets) + { + QString message; + if(!widget->isValid(message)) + { + QMessageBox::warning(this, tr("Invalid settings!"), tr("Invalid settings!") % "\n\n" % message); + return; + } + } + if(ui->comboBoxLanguage->currentData().value() != m_settings.language()) { m_settings.setLanguage(ui->comboBoxLanguage->currentData().value()); - warning = true; + //TODO #73 Allow changing of the language without restart + QMessageBox::information(this, tr("Restart required!"), tr("To apply the new settings a restart is required!")); } auto theme = ui->comboBoxTheme->currentData().toString(); @@ -108,8 +119,8 @@ void SettingsDialog::submit() m_settings.setTheme(theme); } - if(warning) - QMessageBox::information(this, tr("Restart required!"), tr("To apply the new settings a restart is required!")); + for(const auto widget : m_settingsWidgets) + widget->apply(); accept(); } diff --git a/zeiterfassungguilib/settingswidget.h b/zeiterfassungguilib/settingswidget.h index dc3dd6b..56fee50 100644 --- a/zeiterfassungguilib/settingswidget.h +++ b/zeiterfassungguilib/settingswidget.h @@ -12,6 +12,8 @@ class ZEITERFASSUNGGUILIBSHARED_EXPORT SettingsWidget : public QWidget public: explicit SettingsWidget(QWidget *parent = Q_NULLPTR); + virtual bool isValid(QString &message) const { Q_UNUSED(message) return true; } + public Q_SLOTS: virtual void apply() { } };