servatrice/cockatrice/src/releasechannel.h
Gavin Bisesi 6f30304271 Change stable channel downloads to use only github api and links (#2515)
* Change stable channel downloads to use only github api and links

Ref #2502
2017-03-25 16:35:04 -04:00

95 lines
No EOL
2.8 KiB
C++

#ifndef RELEASECHANNEL_H
#define RELEASECHANNEL_H
#include <QString>
#include <QDate>
#include <QObject>
#include <QVariantMap>
class QNetworkReply;
class QNetworkAccessManager;
class Release {
friend class StableReleaseChannel;
friend class DevReleaseChannel;
public:
Release() {};
~Release() {};
private:
QString name, descriptionUrl, downloadUrl, commitHash;
QDate publishDate;
bool compatibleVersionFound = false;
protected:
void setName(QString _name) { name = _name; }
void setDescriptionUrl(QString _descriptionUrl) { descriptionUrl = _descriptionUrl; }
void setDownloadUrl(QString _downloadUrl) { downloadUrl = _downloadUrl; compatibleVersionFound = true; }
void setCommitHash(QString _commitHash) { commitHash = _commitHash; }
void setPublishDate(QDate _publishDate) { publishDate = _publishDate; }
public:
QString getName() const { return name; }
QString getDescriptionUrl() const { return descriptionUrl; }
QString getDownloadUrl() const { return downloadUrl; }
QString getCommitHash() const { return commitHash; }
QDate getPublishDate() const { return publishDate; }
bool isCompatibleVersionFound() const { return compatibleVersionFound; }
};
class ReleaseChannel: public QObject {
Q_OBJECT
public:
ReleaseChannel();
~ReleaseChannel();
protected:
// shared by all instances
static int sharedIndex;
int index;
QNetworkAccessManager *netMan;
QNetworkReply *response;
Release * lastRelease;
protected:
static bool downloadMatchesCurrentOS(const QString &fileName);
virtual QString getReleaseChannelUrl() const = 0;
public:
int getIndex() const { return index; }
Release * getLastRelease() { return lastRelease; }
virtual QString getManualDownloadUrl() const = 0;
virtual QString getName() const = 0;
void checkForUpdates();
signals:
void finishedCheck(bool needToUpdate, bool isCompatible, Release *release);
void error(QString errorString);
protected slots:
virtual void releaseListFinished() = 0;
virtual void fileListFinished() = 0;
};
class StableReleaseChannel: public ReleaseChannel {
Q_OBJECT
public:
StableReleaseChannel() {};
~StableReleaseChannel() {};
virtual QString getManualDownloadUrl() const;
virtual QString getName() const;
protected:
virtual QString getReleaseChannelUrl() const;
protected slots:
virtual void releaseListFinished();
void tagListFinished();
virtual void fileListFinished();
};
class DevReleaseChannel: public ReleaseChannel {
Q_OBJECT
public:
DevReleaseChannel() {};
~DevReleaseChannel() {};
virtual QString getManualDownloadUrl() const;
virtual QString getName() const;
protected:
virtual QString getReleaseChannelUrl() const;
protected slots:
virtual void releaseListFinished();
virtual void fileListFinished();
};
#endif