Added UpdaterSettings #81
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
42
plugins/updaterplugin/updatersettings.cpp
Normal file
42
plugins/updaterplugin/updatersettings.cpp
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
37
plugins/updaterplugin/updatersettings.h
Normal file
37
plugins/updaterplugin/updatersettings.h
Normal 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
|
Reference in New Issue
Block a user