diff --git a/plugins/weatherplugin/weatherplugin.cpp b/plugins/weatherplugin/weatherplugin.cpp index 04d6066..baac5db 100644 --- a/plugins/weatherplugin/weatherplugin.cpp +++ b/plugins/weatherplugin/weatherplugin.cpp @@ -36,7 +36,7 @@ void WeatherPlugin::attachTo(MainWindow &mainWindow) mainWindow.statusBar()->addWidget(new WeatherWidget(mainWindow)); } -SettingsWidget *WeatherPlugin::settingsWidget(QWidget *parent) const +SettingsWidget *WeatherPlugin::settingsWidget(ZeiterfassungSettings &settings, QWidget *parent) const { - return new WeatherSettings(parent); + return new WeatherSettings(settings, parent); } diff --git a/plugins/weatherplugin/weatherplugin.h b/plugins/weatherplugin/weatherplugin.h index 9ad7646..f4fd64c 100644 --- a/plugins/weatherplugin/weatherplugin.h +++ b/plugins/weatherplugin/weatherplugin.h @@ -5,6 +5,9 @@ #include "zeiterfassungplugin.h" +class SettingsWidget; +class ZeiterfassungSettings; + class Q_DECL_EXPORT WeatherPlugin : public ZeiterfassungPlugin { Q_OBJECT @@ -17,7 +20,7 @@ public: // ZeiterfassungPlugin interface void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; - SettingsWidget *settingsWidget(QWidget *parent = Q_NULLPTR) const Q_DECL_OVERRIDE; + SettingsWidget *settingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR) const Q_DECL_OVERRIDE; private: QTranslator m_translator; diff --git a/plugins/weatherplugin/weathersettings.cpp b/plugins/weatherplugin/weathersettings.cpp index 7fc257a..b89296f 100644 --- a/plugins/weatherplugin/weathersettings.cpp +++ b/plugins/weatherplugin/weathersettings.cpp @@ -4,8 +4,9 @@ #include #include -WeatherSettings::WeatherSettings(QWidget *parent) : - SettingsWidget(parent) +WeatherSettings::WeatherSettings(ZeiterfassungSettings &settings, QWidget *parent) : + SettingsWidget(parent), + m_settings(settings) { auto layout = new QFormLayout(this); layout->setMargin(0); diff --git a/plugins/weatherplugin/weathersettings.h b/plugins/weatherplugin/weathersettings.h index edbc4b2..f4a9e8d 100644 --- a/plugins/weatherplugin/weathersettings.h +++ b/plugins/weatherplugin/weathersettings.h @@ -5,16 +5,21 @@ #include "settingswidget.h" +class ZeiterfassungSettings; + class WeatherSettings : public SettingsWidget { Q_OBJECT public: - explicit WeatherSettings(QWidget *parent = Q_NULLPTR); + explicit WeatherSettings(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR); bool isValid(QString &message) const Q_DECL_OVERRIDE; public Q_SLOTS: void apply() Q_DECL_OVERRIDE; + +private: + ZeiterfassungSettings &m_settings; }; #endif // WEATHERSETTINGS_H diff --git a/zeiterfassungguilib/dialogs/settingsdialog.cpp b/zeiterfassungguilib/dialogs/settingsdialog.cpp index 57e915e..2e2c315 100644 --- a/zeiterfassungguilib/dialogs/settingsdialog.cpp +++ b/zeiterfassungguilib/dialogs/settingsdialog.cpp @@ -24,7 +24,7 @@ SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, const QSetcomboBoxLanguage->addItem(tr("German"), QLocale::German); { - auto index = ui->comboBoxLanguage->findData(settings.language()); + auto index = ui->comboBoxLanguage->findData(m_settings.language()); if(index == -1) QMessageBox::warning(this, tr("Invalid settings!"), tr("Invalid settings!") % "\n\n" % tr("Unknown language!")); ui->comboBoxLanguage->setCurrentIndex(index); @@ -35,9 +35,9 @@ SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, const QSetcomboBoxTheme->addItem(entry.baseName(), entry.baseName()); - if(!settings.theme().isEmpty()) + if(!m_settings.theme().isEmpty()) { - auto index = ui->comboBoxTheme->findData(settings.theme()); + auto index = ui->comboBoxTheme->findData(m_settings.theme()); if(index == -1) QMessageBox::warning(this, tr("Invalid settings!"), tr("Invalid settings!") % "\n\n" % tr("Unknown theme!")); ui->comboBoxTheme->setCurrentIndex(index); @@ -45,7 +45,7 @@ SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, const QSetsettingsWidget(this); + auto widget = plugin->settingsWidget(m_settings, this); if(!widget) continue; @@ -63,8 +63,6 @@ SettingsDialog::~SettingsDialog() void SettingsDialog::submit() { - auto warning = false; - if(ui->comboBoxLanguage->currentIndex() == -1 || ui->comboBoxTheme->currentIndex() == -1) { diff --git a/zeiterfassungguilib/zeiterfassungplugin.cpp b/zeiterfassungguilib/zeiterfassungplugin.cpp index 4436d93..0f0913a 100644 --- a/zeiterfassungguilib/zeiterfassungplugin.cpp +++ b/zeiterfassungguilib/zeiterfassungplugin.cpp @@ -3,5 +3,11 @@ ZeiterfassungPlugin::ZeiterfassungPlugin(QObject *parent) : QObject(parent) { - +} + +SettingsWidget *ZeiterfassungPlugin::settingsWidget(ZeiterfassungSettings &settings, QWidget *parent) const +{ + Q_UNUSED(settings) + Q_UNUSED(parent) + return Q_NULLPTR; } diff --git a/zeiterfassungguilib/zeiterfassungplugin.h b/zeiterfassungguilib/zeiterfassungplugin.h index d691db1..bcfc883 100644 --- a/zeiterfassungguilib/zeiterfassungplugin.h +++ b/zeiterfassungguilib/zeiterfassungplugin.h @@ -7,6 +7,7 @@ class MainWindow; class StripsWidget; class SettingsWidget; +class ZeiterfassungSettings; class ZEITERFASSUNGGUILIBSHARED_EXPORT ZeiterfassungPlugin : public QObject { @@ -17,7 +18,7 @@ public: virtual void attachTo(MainWindow &mainWindow) { Q_UNUSED(mainWindow) } - virtual SettingsWidget *settingsWidget(QWidget *parent = Q_NULLPTR) const { Q_UNUSED(parent) return Q_NULLPTR; } + virtual SettingsWidget *settingsWidget(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR) const; }; Q_DECLARE_INTERFACE(ZeiterfassungPlugin, "dbsoftware.zeiterfassung.plugin/1.0")