From 36c2c143a5540573da39a7b556d33a88567f4895 Mon Sep 17 00:00:00 2001 From: Daniel Brunner <0xFEEDC0DE64@gmail.com> Date: Sat, 24 Mar 2018 14:51:56 +0100 Subject: [PATCH] Added UpdaterSettings #81 --- plugins/updaterplugin/updaterdialog.cpp | 12 +++---- plugins/updaterplugin/updaterplugin.cpp | 5 +-- plugins/updaterplugin/updaterplugin.pro | 6 ++-- plugins/updaterplugin/updatersettings.cpp | 42 +++++++++++++++++++++++ plugins/updaterplugin/updatersettings.h | 37 ++++++++++++++++++++ 5 files changed, 92 insertions(+), 10 deletions(-) create mode 100644 plugins/updaterplugin/updatersettings.cpp create mode 100644 plugins/updaterplugin/updatersettings.h diff --git a/plugins/updaterplugin/updaterdialog.cpp b/plugins/updaterplugin/updaterdialog.cpp index 61b3b62..0e3c6f4 100644 --- a/plugins/updaterplugin/updaterdialog.cpp +++ b/plugins/updaterplugin/updaterdialog.cpp @@ -18,6 +18,8 @@ #include "zeiterfassungsettings.h" #include "zeiterfassungapi.h" +#include "updatersettings.h" + UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) : ZeiterfassungDialog(&mainWindow), ui(new Ui::UpdaterDialog), @@ -30,9 +32,7 @@ UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) : connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &UpdaterDialog::acceptedSlot); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &UpdaterDialog::rejectedSlot); - auto url = m_mainWindow.settings().value(QStringLiteral("UpdaterPlugin/url"), - QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases")).toString(); - m_reply = m_mainWindow.erfassung().manager()->get(QNetworkRequest(QUrl(url))); + m_reply = m_mainWindow.erfassung().manager()->get(QNetworkRequest(UpdaterSettings(mainWindow.settings()).url())); connect(m_reply, &QNetworkReply::finished, this, &UpdaterDialog::finished); } @@ -44,7 +44,7 @@ UpdaterDialog::~UpdaterDialog() void UpdaterDialog::acceptedSlot() { if(ui->checkBoxDontShow->isChecked()) - m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); + UpdaterSettings(m_mainWindow.settings()).setLastUpdateCheck(QDate::currentDate()); if(!QDesktopServices::openUrl(m_url)) QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!")); @@ -55,7 +55,7 @@ void UpdaterDialog::acceptedSlot() void UpdaterDialog::rejectedSlot() { if(ui->checkBoxDontShow->isChecked()) - m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); + UpdaterSettings(m_mainWindow.settings()).setLastUpdateCheck(QDate::currentDate()); reject(); } @@ -102,7 +102,7 @@ void UpdaterDialog::finished() } } - m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); + UpdaterSettings(m_mainWindow.settings()).setLastUpdateCheck(QDate::currentDate()); deleteLater(); } diff --git a/plugins/updaterplugin/updaterplugin.cpp b/plugins/updaterplugin/updaterplugin.cpp index c38ace3..be6a508 100644 --- a/plugins/updaterplugin/updaterplugin.cpp +++ b/plugins/updaterplugin/updaterplugin.cpp @@ -9,6 +9,7 @@ #include "zeiterfassungsettings.h" #include "zeiterfassungapi.h" +#include "updatersettings.h" #include "updaterdialog.h" UpdaterPlugin::UpdaterPlugin(QObject *parent) : @@ -33,7 +34,7 @@ UpdaterPlugin::UpdaterPlugin(QObject *parent) : void UpdaterPlugin::attachTo(MainWindow &mainWindow) { - if(mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate().isNull() || - mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate() < QDate::currentDate()) + auto lastUpdateCheck = UpdaterSettings(mainWindow.settings()).lastUpdateCheck(); + if(lastUpdateCheck.isNull() || lastUpdateCheck < QDate::currentDate()) new UpdaterDialog(mainWindow); } diff --git a/plugins/updaterplugin/updaterplugin.pro b/plugins/updaterplugin/updaterplugin.pro index ec3d037..b27cd2f 100644 --- a/plugins/updaterplugin/updaterplugin.pro +++ b/plugins/updaterplugin/updaterplugin.pro @@ -17,10 +17,12 @@ DEPENDPATH += $$PWD/$${PROJECT_ROOT}/zeiterfassungcorelib $$PWD/$${PROJECT_ROOT} DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT HEADERS += updaterdialog.h \ - updaterplugin.h + updaterplugin.h \ + updatersettings.h SOURCES += updaterdialog.cpp \ - updaterplugin.cpp + updaterplugin.cpp \ + updatersettings.cpp FORMS += updaterdialog.ui diff --git a/plugins/updaterplugin/updatersettings.cpp b/plugins/updaterplugin/updatersettings.cpp new file mode 100644 index 0000000..2ea0fff --- /dev/null +++ b/plugins/updaterplugin/updatersettings.cpp @@ -0,0 +1,42 @@ +#include "updatersettings.h" + +#include "zeiterfassungsettings.h" + +const QString UpdaterSettings::m_url("UpdaterPlugin/url"); +const QString UpdaterSettings::m_lastUpdateCheck("UpdaterPlugin/lastUpdateCheck"); +const QUrl UpdaterSettings::m_defaultUrl(QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases")); + +UpdaterSettings::UpdaterSettings(ZeiterfassungSettings &settings, QObject *parent) : + QObject(parent), + m_settings(settings) +{ + +} + +QUrl UpdaterSettings::url() const +{ + return m_settings.value(m_url, m_defaultUrl).toUrl(); +} + +void UpdaterSettings::setUrl(const QUrl &url) +{ + if(this->url() != url) + { + m_settings.setValue(m_url, url); + Q_EMIT urlChanged(url); + } +} + +QDate UpdaterSettings::lastUpdateCheck() const +{ + return m_settings.value(m_lastUpdateCheck).toDate(); +} + +void UpdaterSettings::setLastUpdateCheck(const QDate &lastUpdateCheck) +{ + if(this->lastUpdateCheck() != lastUpdateCheck) + { + m_settings.setValue(m_lastUpdateCheck, lastUpdateCheck); + Q_EMIT lastUpdateCheckChanged(lastUpdateCheck); + } +} diff --git a/plugins/updaterplugin/updatersettings.h b/plugins/updaterplugin/updatersettings.h new file mode 100644 index 0000000..523a9d2 --- /dev/null +++ b/plugins/updaterplugin/updatersettings.h @@ -0,0 +1,37 @@ +#ifndef UPDATERSETTINGS_H +#define UPDATERSETTINGS_H + +#include +#include +#include + +class ZeiterfassungSettings; + +class UpdaterSettings : public QObject +{ + Q_OBJECT + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(QDate lastUpdateCheck READ lastUpdateCheck WRITE setLastUpdateCheck NOTIFY lastUpdateCheckChanged) + +public: + explicit UpdaterSettings(ZeiterfassungSettings &settings, QObject *parent = nullptr); + + QUrl url() const; + void setUrl(const QUrl &url); + + QDate lastUpdateCheck() const; + void setLastUpdateCheck(const QDate &lastUpdateCheck); + +Q_SIGNALS: + void urlChanged(const QUrl &url); + void lastUpdateCheckChanged(const QDate &lastUpdateCheck); + +private: + ZeiterfassungSettings &m_settings; + + static const QString m_url; + static const QString m_lastUpdateCheck; + static const QUrl m_defaultUrl; +}; + +#endif // UPDATERSETTINGS_H