Overte C++ Documentation
AutoUpdater.h
1 //
2 // AutoUpdater.h
3 // libraries/auto-update/src
4 //
5 // Created by Leonardo Murillo on 6/1/2015.
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_AutoUpdater_h
13 #define hifi_AutoUpdater_h
14 
15 #include <QtCore/QCoreApplication>
16 #include <QtCore/QDebug>
17 #include <QtCore/QMap>
18 #include <QtCore/QObject>
19 #include <QtCore/QString>
20 #include <QtCore/QUrl>
21 #include <QtCore/QXmlStreamAttributes>
22 #include <QtCore/QXmlStreamReader>
23 #include <QtGui/QDesktopServices>
24 #include <QtNetwork/QNetworkAccessManager>
25 #include <QtNetwork/QNetworkConfiguration>
26 #include <QtNetwork/QNetworkReply>
27 #include <QtNetwork/QNetworkRequest>
28 
29 #include <ApplicationVersion.h>
30 #include <DependencyManager.h>
31 
32 class AutoUpdater : public QObject, public Dependency {
33  Q_OBJECT
34  SINGLETON_DEPENDENCY
35 
36 public:
37  AutoUpdater();
38 
39  enum class InstallerType {
40  CLIENT_ONLY = 0,
41  FULL
42  };
43 
44  void checkForUpdate();
45  const QMap<ApplicationVersion, QMap<QString, QString>>& getBuildData() { return _builds; }
46  void openLatestUpdateURL();
47  void setInstallerType(InstallerType type) { _installerType = type; }
48  void setInstallerCampaign(QString campaign) { _installerCampaign = campaign; }
49 
50  const ApplicationVersion& getCurrentVersion() const { return _currentVersion; }
51 
52 signals:
53  void latestVersionDataParsed();
54  void newVersionIsAvailable();
55  void newVersionIsDownloaded();
56 
57 private:
58  QMap<ApplicationVersion, QMap<QString, QString>> _builds;
59  QString _operatingSystem;
60  InstallerType _installerType { InstallerType::FULL };
61  QString _installerCampaign { "" };
62 
63  ApplicationVersion _currentVersion;
64 
65  void getLatestVersionData();
66  void downloadUpdateVersion(const QString& version);
67  void appendBuildData(const QString& versionNumber,
68  const QString& downloadURL,
69  const QString& releaseTime,
70  const QString& releaseNotes,
71  const QString& pullRequestNumber);
72 
73 private slots:
74  void parseLatestVersionData();
75  void checkVersionAndNotify();
76 };
77 
78 #endif // _hifi_AutoUpdater_h