Added UpdaterSettings #81

This commit is contained in:
Daniel Brunner
2018-03-24 14:51:56 +01:00
parent 54aa0e9379
commit 36c2c143a5
5 changed files with 92 additions and 10 deletions

View File

@@ -18,6 +18,8 @@
#include "zeiterfassungsettings.h" #include "zeiterfassungsettings.h"
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
#include "updatersettings.h"
UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) : UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) :
ZeiterfassungDialog(&mainWindow), ZeiterfassungDialog(&mainWindow),
ui(new Ui::UpdaterDialog), ui(new Ui::UpdaterDialog),
@@ -30,9 +32,7 @@ UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) :
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &UpdaterDialog::acceptedSlot); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &UpdaterDialog::acceptedSlot);
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &UpdaterDialog::rejectedSlot); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &UpdaterDialog::rejectedSlot);
auto url = m_mainWindow.settings().value(QStringLiteral("UpdaterPlugin/url"), m_reply = m_mainWindow.erfassung().manager()->get(QNetworkRequest(UpdaterSettings(mainWindow.settings()).url()));
QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases")).toString();
m_reply = m_mainWindow.erfassung().manager()->get(QNetworkRequest(QUrl(url)));
connect(m_reply, &QNetworkReply::finished, this, &UpdaterDialog::finished); connect(m_reply, &QNetworkReply::finished, this, &UpdaterDialog::finished);
} }
@@ -44,7 +44,7 @@ UpdaterDialog::~UpdaterDialog()
void UpdaterDialog::acceptedSlot() void UpdaterDialog::acceptedSlot()
{ {
if(ui->checkBoxDontShow->isChecked()) 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)) if(!QDesktopServices::openUrl(m_url))
QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!")); 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() void UpdaterDialog::rejectedSlot()
{ {
if(ui->checkBoxDontShow->isChecked()) if(ui->checkBoxDontShow->isChecked())
m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate()); UpdaterSettings(m_mainWindow.settings()).setLastUpdateCheck(QDate::currentDate());
reject(); 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(); deleteLater();
} }

View File

@@ -9,6 +9,7 @@
#include "zeiterfassungsettings.h" #include "zeiterfassungsettings.h"
#include "zeiterfassungapi.h" #include "zeiterfassungapi.h"
#include "updatersettings.h"
#include "updaterdialog.h" #include "updaterdialog.h"
UpdaterPlugin::UpdaterPlugin(QObject *parent) : UpdaterPlugin::UpdaterPlugin(QObject *parent) :
@@ -33,7 +34,7 @@ UpdaterPlugin::UpdaterPlugin(QObject *parent) :
void UpdaterPlugin::attachTo(MainWindow &mainWindow) void UpdaterPlugin::attachTo(MainWindow &mainWindow)
{ {
if(mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate().isNull() || auto lastUpdateCheck = UpdaterSettings(mainWindow.settings()).lastUpdateCheck();
mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate() < QDate::currentDate()) if(lastUpdateCheck.isNull() || lastUpdateCheck < QDate::currentDate())
new UpdaterDialog(mainWindow); new UpdaterDialog(mainWindow);
} }

View File

@@ -17,10 +17,12 @@ DEPENDPATH += $$PWD/$${PROJECT_ROOT}/zeiterfassungcorelib $$PWD/$${PROJECT_ROOT}
DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000 QT_MESSAGELOGCONTEXT
HEADERS += updaterdialog.h \ HEADERS += updaterdialog.h \
updaterplugin.h updaterplugin.h \
updatersettings.h
SOURCES += updaterdialog.cpp \ SOURCES += updaterdialog.cpp \
updaterplugin.cpp updaterplugin.cpp \
updatersettings.cpp
FORMS += updaterdialog.ui FORMS += updaterdialog.ui

View File

@@ -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);
}
}

View File

@@ -0,0 +1,37 @@
#ifndef UPDATERSETTINGS_H
#define UPDATERSETTINGS_H
#include <QObject>
#include <QUrl>
#include <QDate>
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