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 "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();
}

View File

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

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
HEADERS += updaterdialog.h \
updaterplugin.h
updaterplugin.h \
updatersettings.h
SOURCES += updaterdialog.cpp \
updaterplugin.cpp
updaterplugin.cpp \
updatersettings.cpp
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