From ef2d9b4dcc756edd1cba1db324d7554d291d3217 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE <0xfeedc0de64@gmail.com> Date: Sun, 11 Mar 2018 14:46:34 +0100 Subject: [PATCH] Added settings wrapper for weather --- plugins/weatherplugin/weatherplugin.cpp | 4 +-- plugins/weatherplugin/weatherplugin.pro | 2 ++ plugins/weatherplugin/weathersettings.cpp | 26 +++++----------- plugins/weatherplugin/weathersettings.h | 17 +++------- .../weatherplugin/weathersettingswidget.cpp | 31 +++++++++++++++++++ plugins/weatherplugin/weathersettingswidget.h | 29 +++++++++++++++++ plugins/weatherplugin/weatherwidget.cpp | 7 +++-- 7 files changed, 81 insertions(+), 35 deletions(-) create mode 100644 plugins/weatherplugin/weathersettingswidget.cpp create mode 100644 plugins/weatherplugin/weathersettingswidget.h diff --git a/plugins/weatherplugin/weatherplugin.cpp b/plugins/weatherplugin/weatherplugin.cpp index baac5db..a09feee 100644 --- a/plugins/weatherplugin/weatherplugin.cpp +++ b/plugins/weatherplugin/weatherplugin.cpp @@ -9,7 +9,7 @@ #include "mainwindow.h" #include "weatherwidget.h" -#include "weathersettings.h" +#include "weathersettingswidget.h" WeatherPlugin::WeatherPlugin(QObject *parent) : ZeiterfassungPlugin(parent) @@ -38,5 +38,5 @@ void WeatherPlugin::attachTo(MainWindow &mainWindow) SettingsWidget *WeatherPlugin::settingsWidget(ZeiterfassungSettings &settings, QWidget *parent) const { - return new WeatherSettings(settings, parent); + return new WeatherSettingsWidget(settings, parent); } diff --git a/plugins/weatherplugin/weatherplugin.pro b/plugins/weatherplugin/weatherplugin.pro index 398a0a2..ebed643 100644 --- a/plugins/weatherplugin/weatherplugin.pro +++ b/plugins/weatherplugin/weatherplugin.pro @@ -18,10 +18,12 @@ DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSA HEADERS += weatherplugin.h \ weathersettings.h \ + weathersettingswidget.h \ weatherwidget.h SOURCES += weatherplugin.cpp \ weathersettings.cpp \ + weathersettingswidget.cpp \ weatherwidget.cpp FORMS += diff --git a/plugins/weatherplugin/weathersettings.cpp b/plugins/weatherplugin/weathersettings.cpp index a9a51b6..52f4062 100644 --- a/plugins/weatherplugin/weathersettings.cpp +++ b/plugins/weatherplugin/weathersettings.cpp @@ -1,31 +1,21 @@ #include "weathersettings.h" -#include -#include -#include +#include "zeiterfassungsettings.h" -WeatherSettings::WeatherSettings(ZeiterfassungSettings &settings, QWidget *parent) : - SettingsWidget(parent), +WeatherSettings::WeatherSettings(ZeiterfassungSettings &settings) : m_settings(settings) { - auto layout = new QFormLayout(this); - layout->setMargin(0); - m_lineEdit = new QLineEdit(this); - layout->addRow(tr("Weather API:"), m_lineEdit); - - setLayout(layout); } -bool WeatherSettings::isValid(QString &message) const +QUrl WeatherSettings::url() const { - Q_UNUSED(message) - - qDebug() << "called"; - return true; + return m_settings.value(QStringLiteral("WeatherPlugin/url"), + QUrl(QStringLiteral("http://api.openweathermap.org/data/2.5/weather?q=Graz,AT&units=metric&APPID=40f6c892c6162680c6c9235169dc9f83"))) + .toUrl(); } -void WeatherSettings::apply() +void WeatherSettings::setUrl(const QUrl &url) { - qDebug() << "called"; + m_settings.setValue(QStringLiteral("WeatherPlugin/url"), url); } diff --git a/plugins/weatherplugin/weathersettings.h b/plugins/weatherplugin/weathersettings.h index e0a1b7a..eaa0ff4 100644 --- a/plugins/weatherplugin/weathersettings.h +++ b/plugins/weatherplugin/weathersettings.h @@ -1,27 +1,20 @@ #ifndef WEATHERSETTINGS_H #define WEATHERSETTINGS_H -#include - -#include "settingswidget.h" +#include class ZeiterfassungSettings; -class WeatherSettings : public SettingsWidget +class WeatherSettings { - Q_OBJECT public: - explicit WeatherSettings(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR); + WeatherSettings(ZeiterfassungSettings &settings); - bool isValid(QString &message) const Q_DECL_OVERRIDE; - -public Q_SLOTS: - void apply() Q_DECL_OVERRIDE; + QUrl url() const; + void setUrl(const QUrl &url); private: ZeiterfassungSettings &m_settings; - - QLineEdit *m_lineEdit; }; #endif // WEATHERSETTINGS_H diff --git a/plugins/weatherplugin/weathersettingswidget.cpp b/plugins/weatherplugin/weathersettingswidget.cpp new file mode 100644 index 0000000..78fef05 --- /dev/null +++ b/plugins/weatherplugin/weathersettingswidget.cpp @@ -0,0 +1,31 @@ +#include "weathersettingswidget.h" + +#include +#include +#include + +WeatherSettingsWidget::WeatherSettingsWidget(ZeiterfassungSettings &settings, QWidget *parent) : + SettingsWidget(parent), + m_settings(settings) +{ + auto layout = new QFormLayout(this); + layout->setMargin(0); + + m_lineEdit = new QLineEdit(this); + layout->addRow(tr("Weather API:"), m_lineEdit); + + setLayout(layout); +} + +bool WeatherSettingsWidget::isValid(QString &message) const +{ + Q_UNUSED(message) + + qDebug() << "called"; + return true; +} + +void WeatherSettingsWidget::apply() +{ + qDebug() << "called"; +} diff --git a/plugins/weatherplugin/weathersettingswidget.h b/plugins/weatherplugin/weathersettingswidget.h new file mode 100644 index 0000000..ffc8920 --- /dev/null +++ b/plugins/weatherplugin/weathersettingswidget.h @@ -0,0 +1,29 @@ +#ifndef WEATHERSETTINGS_H +#define WEATHERSETTINGS_H + +#include + +#include "settingswidget.h" + +class QLineEdit; + +class ZeiterfassungSettings; + +class WeatherSettingsWidget : public SettingsWidget +{ + Q_OBJECT +public: + explicit WeatherSettingsWidget(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; + + QLineEdit *m_lineEdit; +}; + +#endif // WEATHERSETTINGS_H diff --git a/plugins/weatherplugin/weatherwidget.cpp b/plugins/weatherplugin/weatherwidget.cpp index 764bf99..9d62b09 100644 --- a/plugins/weatherplugin/weatherwidget.cpp +++ b/plugins/weatherplugin/weatherwidget.cpp @@ -14,6 +14,8 @@ #include "zeiterfassungsettings.h" #include "zeiterfassungapi.h" +#include "weathersettings.h" + WeatherWidget::WeatherWidget(MainWindow &mainWindow) : QLabel(&mainWindow), m_mainWindow(mainWindow) @@ -30,10 +32,9 @@ void WeatherWidget::refresh() { setText(tr("Loading...")); - auto url = m_mainWindow.settings().value(QStringLiteral("WeatherPlugin/url"), - QStringLiteral("http://api.openweathermap.org/data/2.5/weather?q=Graz,AT&units=metric&APPID=40f6c892c6162680c6c9235169dc9f83")).toString(); + auto url = WeatherSettings(m_mainWindow.settings()).url(); - m_reply = std::unique_ptr(m_mainWindow.erfassung().manager()->get(QNetworkRequest(QUrl(url)))); + m_reply = std::unique_ptr(m_mainWindow.erfassung().manager()->get(QNetworkRequest(url))); connect(m_reply.get(), &QNetworkReply::finished, this, &WeatherWidget::finished); }