all repos — mgba @ 9ce234daaca53093448c1b133c9e291385ee229e

mGBA Game Boy Advance Emulator

src/platform/qt/AbstractUpdater.h (view raw)

 1/* Copyright (c) 2013-2019 Jeffrey Pfau
 2 *
 3 * This Source Code Form is subject to the terms of the Mozilla Public
 4 * License, v. 2.0. If a copy of the MPL was not distributed with this
 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 6#pragma once
 7
 8#include <QByteArray>
 9#include <QFile>
10#include <QObject>
11
12class QNetworkAccessManager;
13class QNetworkReply;
14
15namespace QGBA {
16
17class AbstractUpdater : public QObject {
18Q_OBJECT
19
20public:
21	AbstractUpdater(QObject* parent = nullptr);
22	virtual ~AbstractUpdater() {}
23
24public slots:
25	void checkUpdate();
26	void downloadUpdate();
27
28signals:
29	void updateAvailable(bool);
30	void updateDone(bool);
31
32protected:
33	virtual QUrl manifestLocation() const = 0;
34	virtual QUrl parseManifest(const QByteArray&) const = 0;
35	virtual QString destination() const = 0;
36
37private:
38	void chaseRedirects(QNetworkReply*, void (AbstractUpdater::*cb)(QNetworkReply*));
39	void manifestDownloaded(QNetworkReply*);
40	void updateDownloaded(QNetworkReply*);
41
42	bool m_isUpdating = false;
43	QNetworkAccessManager* m_netman;
44	QByteArray m_manifest;
45};
46
47}