Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
release_channel.h
Go to the documentation of this file.
1
6
7#ifndef RELEASECHANNEL_H
8#define RELEASECHANNEL_H
9
10#include <QDate>
11#include <QLoggingCategory>
12#include <QObject>
13#include <QString>
14#include <QVariantList>
15#include <optional>
16#include <qtmetamacros.h>
17#include <utility>
18
19inline Q_LOGGING_CATEGORY(ReleaseChannelLog, "release_channel");
20
21class QNetworkReply;
22class QNetworkAccessManager;
23
25{
27 friend class BetaReleaseChannel;
28
29public:
30 Release() = default;
31 ~Release() = default;
32
33private:
37
38protected:
39 void setName(QString _name)
40 {
41 name = std::move(_name);
42 }
43 void setDescriptionUrl(QString _descriptionUrl)
44 {
45 descriptionUrl = std::move(_descriptionUrl);
46 }
47 void setDownloadUrl(QString _downloadUrl)
48 {
49 downloadUrl = std::move(_downloadUrl);
51 }
52 void setCommitHash(QString _commitHash)
53 {
54 commitHash = std::move(_commitHash);
55 }
56 void setPublishDate(QDate _publishDate)
57 {
58 publishDate = _publishDate;
59 }
60
61public:
62 [[nodiscard]] QString getName() const
63 {
64 return name;
65 }
66 [[nodiscard]] QString getDescriptionUrl() const
67 {
68 return descriptionUrl;
69 }
70 [[nodiscard]] QString getDownloadUrl() const
71 {
72 return downloadUrl;
73 }
74 [[nodiscard]] QString getCommitHash() const
75 {
76 return commitHash;
77 }
78 [[nodiscard]] QDate getPublishDate() const
79 {
80 return publishDate;
81 }
82 [[nodiscard]] bool isCompatibleVersionFound() const
83 {
85 }
86};
87
88class ReleaseChannel : public QObject
89{
90 Q_OBJECT
91public:
92 explicit ReleaseChannel();
93 ~ReleaseChannel() override;
94
95protected:
96 QNetworkAccessManager *netMan;
97 QNetworkReply *response;
99
100protected:
101 static std::optional<int> getTargetVersionForCurrentOS(const QString &fileName);
102 static QString findBestDownloadUrl(const QVariantList &assets);
103 [[nodiscard]] virtual QString getReleaseChannelUrl() const = 0;
104
105public:
107 {
108 return lastRelease;
109 }
110 [[nodiscard]] virtual QString getManualDownloadUrl() const = 0;
111 [[nodiscard]] virtual QString getName() const = 0;
112 void checkForUpdates();
113signals:
114 void finishedCheck(bool needToUpdate, bool isCompatible, Release *release);
115 void error(QString errorString);
116protected slots:
117 virtual void releaseListFinished() = 0;
118 virtual void fileListFinished() = 0;
119};
120
122{
123 Q_OBJECT
124public:
125 explicit StableReleaseChannel() = default;
126 ~StableReleaseChannel() override = default;
127
128 [[nodiscard]] QString getManualDownloadUrl() const override;
129
130 [[nodiscard]] QString getName() const override;
131
132protected:
133 [[nodiscard]] QString getReleaseChannelUrl() const override;
134protected slots:
135
136 void releaseListFinished() override;
137 void tagListFinished();
138
139 void fileListFinished() override;
140};
141
143{
144 Q_OBJECT
145public:
147 ~BetaReleaseChannel() override = default;
148
149 [[nodiscard]] QString getManualDownloadUrl() const override;
150
151 [[nodiscard]] QString getName() const override;
152
153protected:
154 [[nodiscard]] QString getReleaseChannelUrl() const override;
155protected slots:
156
157 void releaseListFinished() override;
158
159 void fileListFinished() override;
160};
161
162#endif
void releaseListFinished() override
Definition release_channel.cpp:286
~BetaReleaseChannel() override=default
BetaReleaseChannel()=default
void fileListFinished() override
Definition release_channel.cpp:339
QString getReleaseChannelUrl() const override
Definition release_channel.cpp:281
QString getManualDownloadUrl() const override
Definition release_channel.cpp:271
QString getName() const override
Definition release_channel.cpp:276
ReleaseChannel()
Definition release_channel.cpp:65
virtual QString getManualDownloadUrl() const =0
Release * lastRelease
Definition release_channel.h:98
static std::optional< int > getTargetVersionForCurrentOS(const QString &fileName)
Definition release_channel.cpp:83
void error(QString errorString)
void checkForUpdates()
Definition release_channel.cpp:74
void finishedCheck(bool needToUpdate, bool isCompatible, Release *release)
virtual void releaseListFinished()=0
QNetworkAccessManager * netMan
Definition release_channel.h:96
virtual QString getReleaseChannelUrl() const =0
Release * getLastRelease()
Definition release_channel.h:106
virtual void fileListFinished()=0
QNetworkReply * response
Definition release_channel.h:97
virtual QString getName() const =0
static QString findBestDownloadUrl(const QVariantList &assets)
Definition release_channel.cpp:148
Definition release_channel.h:25
QString getCommitHash() const
Definition release_channel.h:74
QString getName() const
Definition release_channel.h:62
~Release()=default
void setDescriptionUrl(QString _descriptionUrl)
Definition release_channel.h:43
QDate getPublishDate() const
Definition release_channel.h:78
QString commitHash
Definition release_channel.h:34
friend class StableReleaseChannel
Definition release_channel.h:26
QString getDownloadUrl() const
Definition release_channel.h:70
Release()=default
QDate publishDate
Definition release_channel.h:35
bool isCompatibleVersionFound() const
Definition release_channel.h:82
void setPublishDate(QDate _publishDate)
Definition release_channel.h:56
void setDownloadUrl(QString _downloadUrl)
Definition release_channel.h:47
bool compatibleVersionFound
Definition release_channel.h:36
QString name
Definition release_channel.h:34
QString descriptionUrl
Definition release_channel.h:34
QString downloadUrl
Definition release_channel.h:34
void setName(QString _name)
Definition release_channel.h:39
QString getDescriptionUrl() const
Definition release_channel.h:66
friend class BetaReleaseChannel
Definition release_channel.h:27
void setCommitHash(QString _commitHash)
Definition release_channel.h:52
QString getManualDownloadUrl() const override
Definition release_channel.cpp:171
void tagListFinished()
Definition release_channel.cpp:236
StableReleaseChannel()=default
void fileListFinished() override
Definition release_channel.cpp:266
QString getName() const override
Definition release_channel.cpp:176
~StableReleaseChannel() override=default
void releaseListFinished() override
Definition release_channel.cpp:186
QString getReleaseChannelUrl() const override
Definition release_channel.cpp:181
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")