From a6e0f5169fd3af3ed7dc9527b8b16dae039cf6ab Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Mon, 18 Dec 2017 22:39:10 +0100 Subject: [PATCH] Moved Updater functionality into plugin --- .../advancedviewplugin/advancedviewplugin.h | 2 +- plugins/presenceplugin/presenceplugin.h | 2 +- .../updaterplugin/updaterdialog.cpp | 51 ++++++++++--------- plugins/updaterplugin/updaterdialog.h | 33 ++++++++++++ .../updaterplugin/updaterdialog.ui | 4 +- plugins/updaterplugin/updaterplugin.cpp | 10 ++++ plugins/updaterplugin/updaterplugin.h | 2 +- plugins/updaterplugin/updaterplugin.pro | 10 ++-- zeiterfassunglib/dialogs/updatedialog.h | 35 ------------- zeiterfassunglib/mainwindow.cpp | 4 -- zeiterfassunglib/zeiterfassunglib.pro | 3 -- zeiterfassunglib/zeiterfassungsettings.cpp | 10 ---- zeiterfassunglib/zeiterfassungsettings.h | 3 -- 13 files changed, 81 insertions(+), 88 deletions(-) rename zeiterfassunglib/dialogs/updatedialog.cpp => plugins/updaterplugin/updaterdialog.cpp (56%) create mode 100644 plugins/updaterplugin/updaterdialog.h rename zeiterfassunglib/dialogs/updatedialog.ui => plugins/updaterplugin/updaterdialog.ui (96%) delete mode 100644 zeiterfassunglib/dialogs/updatedialog.h diff --git a/plugins/advancedviewplugin/advancedviewplugin.h b/plugins/advancedviewplugin/advancedviewplugin.h index e4a08e8..02bfc66 100644 --- a/plugins/advancedviewplugin/advancedviewplugin.h +++ b/plugins/advancedviewplugin/advancedviewplugin.h @@ -17,7 +17,7 @@ public: explicit AdvancedViewPlugin(QObject *parent = Q_NULLPTR); // ZeiterfassungPlugin interface - void attachTo(MainWindow &mainWindow); + void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; }; #endif // ADVANCEDVIEWPLUGIN_H diff --git a/plugins/presenceplugin/presenceplugin.h b/plugins/presenceplugin/presenceplugin.h index 362c0f1..acee4b7 100644 --- a/plugins/presenceplugin/presenceplugin.h +++ b/plugins/presenceplugin/presenceplugin.h @@ -17,7 +17,7 @@ public: explicit PresencePlugin(QObject *parent = Q_NULLPTR); // ZeiterfassungPlugin interface - void attachTo(MainWindow &mainWindow); + void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; }; #endif // PRESENCEPLUGIN_H diff --git a/zeiterfassunglib/dialogs/updatedialog.cpp b/plugins/updaterplugin/updaterdialog.cpp similarity index 56% rename from zeiterfassunglib/dialogs/updatedialog.cpp rename to plugins/updaterplugin/updaterdialog.cpp index e47fc81..3d4c560 100644 --- a/zeiterfassunglib/dialogs/updatedialog.cpp +++ b/plugins/updaterplugin/updaterdialog.cpp @@ -1,5 +1,5 @@ -#include "updatedialog.h" -#include "ui_updatedialog.h" +#include "updaterdialog.h" +#include "ui_updaterdialog.h" #include #include @@ -14,34 +14,48 @@ #include #include +#include "mainwindow.h" #include "zeiterfassungsettings.h" +#include "zeiterfassungapi.h" -UpdateDialog::UpdateDialog(ZeiterfassungSettings &settings, QNetworkAccessManager *manager, QWidget *parent) : - QDialog(parent), - ui(new Ui::UpdateDialog), - m_settings(settings) +UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) : + QDialog(&mainWindow), + ui(new Ui::UpdaterDialog), + m_mainWindow(mainWindow) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); - connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &UpdateDialog::submit); + connect(ui->buttonBox, &QDialogButtonBox::accepted, this, [=]() { + if(ui->checkBoxDontShow->isChecked()) + m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); + + if(!QDesktopServices::openUrl(m_url)) + QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!")); + + accept(); + }); + connect(ui->buttonBox, &QDialogButtonBox::rejected, this, [=](){ if(ui->checkBoxDontShow->isChecked()) - m_settings.setLastUpdateCheck(QDate::currentDate()); + m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); + reject(); }); - m_reply = manager->get(QNetworkRequest(QUrl(QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases")))); - connect(m_reply, &QNetworkReply::finished, this, &UpdateDialog::finished); + auto url = m_mainWindow.settings().value(QStringLiteral("UpdaterPlugin/url"), + QUrl(QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases"))).toUrl(); + m_reply = m_mainWindow.erfassung().manager()->get(QNetworkRequest(url)); + connect(m_reply, &QNetworkReply::finished, this, &UpdaterDialog::finished); } -UpdateDialog::~UpdateDialog() +UpdaterDialog::~UpdaterDialog() { delete ui; } -void UpdateDialog::finished() +void UpdaterDialog::finished() { if(m_reply->error() != QNetworkReply::NoError) { @@ -83,18 +97,7 @@ void UpdateDialog::finished() } } - m_settings.setLastUpdateCheck(QDate::currentDate()); + m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); deleteLater(); } - -void UpdateDialog::submit() -{ - if(ui->checkBoxDontShow->isChecked()) - m_settings.setLastUpdateCheck(QDate::currentDate()); - - if(!QDesktopServices::openUrl(m_url)) - QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!")); - - accept(); -} diff --git a/plugins/updaterplugin/updaterdialog.h b/plugins/updaterplugin/updaterdialog.h new file mode 100644 index 0000000..ba41f6e --- /dev/null +++ b/plugins/updaterplugin/updaterdialog.h @@ -0,0 +1,33 @@ +#ifndef UPDATERDIALOG_H +#define UPDATERDIALOG_H + +#include +#include + +#include "zeiterfassunglib_global.h" + +class QNetworkReply; + +namespace Ui { class UpdaterDialog; } +class MainWindow; + +class ZEITERFASSUNGLIBSHARED_EXPORT UpdaterDialog : public QDialog +{ + Q_OBJECT + +public: + explicit UpdaterDialog(MainWindow &parent); + ~UpdaterDialog(); + +private Q_SLOTS: + void finished(); + +private: + Ui::UpdaterDialog *ui; + MainWindow &m_mainWindow; + QNetworkReply *m_reply; + + QUrl m_url; +}; + +#endif // UPDATERDIALOG_H diff --git a/zeiterfassunglib/dialogs/updatedialog.ui b/plugins/updaterplugin/updaterdialog.ui similarity index 96% rename from zeiterfassunglib/dialogs/updatedialog.ui rename to plugins/updaterplugin/updaterdialog.ui index c0841db..8d8f8d3 100644 --- a/zeiterfassunglib/dialogs/updatedialog.ui +++ b/plugins/updaterplugin/updaterdialog.ui @@ -1,7 +1,7 @@ - UpdateDialog - + UpdaterDialog + 0 diff --git a/plugins/updaterplugin/updaterplugin.cpp b/plugins/updaterplugin/updaterplugin.cpp index a19a90e..24b5f51 100644 --- a/plugins/updaterplugin/updaterplugin.cpp +++ b/plugins/updaterplugin/updaterplugin.cpp @@ -2,6 +2,12 @@ #include +#include "mainwindow.h" +#include "zeiterfassungsettings.h" +#include "zeiterfassungapi.h" + +#include "updaterdialog.h" + UpdaterPlugin::UpdaterPlugin(QObject *parent) : ZeiterfassungPlugin(parent) { @@ -10,5 +16,9 @@ UpdaterPlugin::UpdaterPlugin(QObject *parent) : void UpdaterPlugin::attachTo(MainWindow &mainWindow) { + qDebug() << "called"; + if(mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate().isNull() || + mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate() < QDate::currentDate()) + new UpdaterDialog(mainWindow); } diff --git a/plugins/updaterplugin/updaterplugin.h b/plugins/updaterplugin/updaterplugin.h index 99d5c17..6ebf16b 100644 --- a/plugins/updaterplugin/updaterplugin.h +++ b/plugins/updaterplugin/updaterplugin.h @@ -17,7 +17,7 @@ public: explicit UpdaterPlugin(QObject *parent = Q_NULLPTR); // ZeiterfassungPlugin interface - void attachTo(MainWindow &mainWindow); + void attachTo(MainWindow &mainWindow) Q_DECL_OVERRIDE; }; #endif // UPDATERPLUGIN_H diff --git a/plugins/updaterplugin/updaterplugin.pro b/plugins/updaterplugin/updaterplugin.pro index ea8097d..d7fa50f 100644 --- a/plugins/updaterplugin/updaterplugin.pro +++ b/plugins/updaterplugin/updaterplugin.pro @@ -1,6 +1,6 @@ QT += core network gui widgets -TARGET = advancedviewplugin +TARGET = updaterplugin TEMPLATE = lib CONFIG += shared c++14 @@ -14,11 +14,13 @@ DEPENDPATH += $$PWD/../../zeiterfassunglib DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT -HEADERS += updaterplugin.h +HEADERS += updaterdialog.h \ + updaterplugin.h -SOURCES += updaterplugin.cpp +SOURCES += updaterdialog.cpp \ + updaterplugin.cpp -FORMS += +FORMS += updaterdialog.ui RESOURCES += diff --git a/zeiterfassunglib/dialogs/updatedialog.h b/zeiterfassunglib/dialogs/updatedialog.h deleted file mode 100644 index d2a9c08..0000000 --- a/zeiterfassunglib/dialogs/updatedialog.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef UPDATEDIALOG_H -#define UPDATEDIALOG_H - -#include -#include - -#include "zeiterfassunglib_global.h" - -class QNetworkAccessManager; -class QNetworkReply; - -class ZeiterfassungSettings; -namespace Ui { class UpdateDialog; } - -class ZEITERFASSUNGLIBSHARED_EXPORT UpdateDialog : public QDialog -{ - Q_OBJECT - -public: - explicit UpdateDialog(ZeiterfassungSettings &settings, QNetworkAccessManager *manager, QWidget *parent = Q_NULLPTR); - ~UpdateDialog(); - -private Q_SLOTS: - void finished(); - void submit(); - -private: - Ui::UpdateDialog *ui; - ZeiterfassungSettings &m_settings; - QNetworkReply *m_reply; - - QUrl m_url; -}; - -#endif // UPDATEDIALOG_H diff --git a/zeiterfassunglib/mainwindow.cpp b/zeiterfassunglib/mainwindow.cpp index a298dbc..9d52cd9 100644 --- a/zeiterfassunglib/mainwindow.cpp +++ b/zeiterfassunglib/mainwindow.cpp @@ -21,7 +21,6 @@ #include "stripswidget.h" #include "dialogs/aboutmedialog.h" #include "dialogs/settingsdialog.h" -#include "dialogs/updatedialog.h" #include "replies/getprojectsreply.h" #include "replies/getauswertungreply.h" #include "replies/createbookingreply.h" @@ -97,9 +96,6 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass m_holidaysLabel->setFrameShadow(QFrame::Sunken); dateChanged(); - - if(settings.lastUpdateCheck().isNull() || settings.lastUpdateCheck() < QDate::currentDate()) - new UpdateDialog(settings, erfassung.manager(), this); } MainWindow::~MainWindow() diff --git a/zeiterfassunglib/zeiterfassunglib.pro b/zeiterfassunglib/zeiterfassunglib.pro index 62c40c9..0c77d71 100644 --- a/zeiterfassunglib/zeiterfassunglib.pro +++ b/zeiterfassunglib/zeiterfassunglib.pro @@ -21,7 +21,6 @@ SOURCES += mainwindow.cpp \ dialogs/authenticationdialog.cpp \ dialogs/languageselectiondialog.cpp \ dialogs/settingsdialog.cpp \ - dialogs/updatedialog.cpp \ replies/createbookingreply.cpp \ replies/createtimeassignmentreply.cpp \ replies/deletebookingreply.cpp \ @@ -51,7 +50,6 @@ HEADERS += cpp14polyfills.h \ dialogs/authenticationdialog.h \ dialogs/languageselectiondialog.h \ dialogs/settingsdialog.h \ - dialogs/updatedialog.h \ replies/createbookingreply.h \ replies/createtimeassignmentreply.h \ replies/deletebookingreply.h \ @@ -69,7 +67,6 @@ HEADERS += cpp14polyfills.h \ replies/getuserinforeply.h FORMS += mainwindow.ui \ - dialogs/updatedialog.ui \ dialogs/settingsdialog.ui \ dialogs/languageselectiondialog.ui \ dialogs/authenticationdialog.ui \ diff --git a/zeiterfassunglib/zeiterfassungsettings.cpp b/zeiterfassunglib/zeiterfassungsettings.cpp index 6f98a2f..18149be 100644 --- a/zeiterfassunglib/zeiterfassungsettings.cpp +++ b/zeiterfassunglib/zeiterfassungsettings.cpp @@ -132,16 +132,6 @@ void ZeiterfassungSettings::prependText(const QString &text) prependItem(QStringLiteral("texte"), text); } -QDate ZeiterfassungSettings::lastUpdateCheck() const -{ - return value(QStringLiteral("lastUpdateCheck")).toDate(); -} - -void ZeiterfassungSettings::setLastUpdateCheck(const QDate &lastUpdateCheck) -{ - setValue(QStringLiteral("lastUpdateCheck"), lastUpdateCheck); -} - QString ZeiterfassungSettings::theme() const { return value(QStringLiteral("theme")).toString(); diff --git a/zeiterfassunglib/zeiterfassungsettings.h b/zeiterfassunglib/zeiterfassungsettings.h index 952cbdb..0a56adf 100644 --- a/zeiterfassunglib/zeiterfassungsettings.h +++ b/zeiterfassunglib/zeiterfassungsettings.h @@ -51,9 +51,6 @@ public: void setTexte(const QStringList &texte); void prependText(const QString &text); - QDate lastUpdateCheck() const; - void setLastUpdateCheck(const QDate &lastUpdateCheck); - QString theme() const; void setTheme(const QString &theme);