EstervUpdater 0.0.6
In-app updater
Loading...
Searching...
No Matches
updater.hpp
1#pragma once
2
3#include <QObject>
4#include <QProcess>
5
6#if defined(USE_QML)
7#include <QtQml>
8#endif
9
10#if defined(UPDATER_SHARED)
11#include <QtCore/QtGlobal>
12#ifdef WINDOWS_EXPORT
13#define UPDAT_EXPORT Q_DECL_EXPORT
14#else
15#define UPDAT_EXPORT Q_DECL_IMPORT
16#endif
17#else
18#define UPDAT_EXPORT
19#endif
20
21namespace Esterv::Utils {
22
23class UPDAT_EXPORT Updater : public QObject {
24
25 Q_OBJECT
26#ifdef USE_QML
27 Q_PROPERTY(State state READ state NOTIFY stateChanged)
28 Q_PROPERTY(bool hasUpdate READ hasUpdate NOTIFY hasUpdateChanged)
29 Q_PROPERTY(
30 QString updateDetails READ updateDetails NOTIFY updateDetailsChanged)
31 QML_ELEMENT
32 QML_SINGLETON
33#endif
34 Updater(QObject *parent = nullptr);
35
36public:
37 static Updater *instance();
38
39 Q_INVOKABLE void update();
40 Q_INVOKABLE void restart();
41 Q_INVOKABLE void checkUpdates(void);
42 Q_INVOKABLE void hasIFW(QString toolname =
43#if defined(Q_OS_WIN)
44 "../maintenancetool.exe"
45#elif defined(Q_OS_MAC)
46 "../../../../maintenancetool.app/Contents/MacOS/"
47 "maintenancetool"
48#else
49 "../maintenancetool"
50#endif
51 ,
52 bool absolute = false);
60 Q_ENUM(State)
61 State state() const { return m_state; }
62 QString updateDetails() const { return m_updateDetails; }
63 bool hasUpdate() const { return m_hasUpdate; }
64#if defined(USE_QML)
65 static Updater *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine) {
66 auto inst = instance();
67 inst->hasIFW();
68 if (inst->state() == Ready) {
69 inst->checkUpdates();
70 }
71 return inst;
72 }
73#endif
74
75signals:
76 void stateChanged();
77 void updateDetailsChanged();
78 void restarting(int retcode);
79 void hasUpdateChanged();
80
81private:
82 void setState(State sta) {
83 if (sta != m_state) {
84 m_state = sta;
85 emit stateChanged();
86 }
87 }
88
89 void checkfinished(int exitCode, QProcess::ExitStatus exitStatus);
90 void finishUpdate(int exitCode, QProcess::ExitStatus exitStatus);
91 State m_state;
92 QString m_MTPath, m_updateDetails;
93 QProcess m_check, m_update;
94 static Updater *m_instance;
95 bool m_hasUpdate;
96};
97} // namespace Esterv::Utils
Definition updater.hpp:23
QString updateDetails() const
Definition updater.hpp:62
State
Definition updater.hpp:53
@ Installing
Definition updater.hpp:57
@ ReadyToRestart
Definition updater.hpp:58
@ Ready
Definition updater.hpp:55
@ Checking
Definition updater.hpp:56
bool hasUpdate() const
Definition updater.hpp:63
Definition UpdateBox.qml:5