swift
updateinfo.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_DB_UPDATEINFO_H
7 #define SWIFT_MISC_DB_UPDATEINFO_H
8 
9 #include <QStringList>
10 
11 #include "misc/datacache.h"
12 #include "misc/db/artifactlist.h"
14 #include "misc/valueobject.h"
15 
16 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::db, CUpdateInfo)
17 
18 namespace swift::misc::db
19 {
23  class SWIFT_MISC_EXPORT CUpdateInfo : public CValueObject<CUpdateInfo>
24  {
25  public:
28  {
29  IndexArtifactsPilotClient = CPropertyIndexRef::GlobalIndexCUpdateInfo,
30  IndexArtifactsXSwiftBus,
31  IndexDistributions
32  };
33 
36 
38  CUpdateInfo(const CArtifactList &artifacts, const CDistributionList &distributions);
39 
42 
44  const CArtifactList &getArtifactsPilotClient() const { return m_artifactsPilotClient; }
45 
48  CArtifactList getArtifactsPilotClientForCurrentPlatform() const;
49 
51  const CArtifactList &getArtifactsXSwiftBus() const { return m_artifactsXSwiftBus; }
52 
54  CArtifactList getArtifactsXSwiftBusLatestVersionFirst() const;
55 
57  CArtifactList getArtifactsXSwiftBusOldestVersionFirst() const;
58 
61  CArtifactList getArtifactsXSwiftBusForCurrentPlatform() const;
62 
64  const CDistributionList &getDistributions() const { return m_distributions; }
65 
67  CDistributionList getDistributionsPilotClientForCurrentPlatform() const;
68 
70  CDistribution anticipateOwnDistribution() const;
71 
73  QStringList anticipateMyDefaultChannelAndPlatform() const;
74 
76  bool isEmpty() const { return m_artifactsPilotClient.isEmpty() && m_distributions.isEmpty(); }
77 
79  QString convertToQString(bool i18n = false) const;
80 
82  QString convertToQString(const QString &separator, bool i18n = false) const;
83 
85  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
86 
88  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
89 
91  static CUpdateInfo fromDatabaseJson(const QJsonObject &json, const QString &prefix = {});
92 
94  static CUpdateInfo fromDatabaseJson(const QString &jsonString);
95 
97  static CUpdateInfo fromGitHubReleasesJson(const QByteArray &jsonData);
98 
99  private:
100  CArtifactList m_artifactsPilotClient;
101  CArtifactList m_artifactsXSwiftBus;
102  CDistributionList m_distributions;
103 
105  CUpdateInfo,
106  SWIFT_METAMEMBER(artifactsPilotClient),
107  SWIFT_METAMEMBER(artifactsXSwiftBus),
108  SWIFT_METAMEMBER(distributions));
109  };
110 
112  struct TUpdateInfo : public TDataTrait<CUpdateInfo>
113  {
115  static const char *key() { return "updateinfo"; }
116 
118  static constexpr bool isPinned() { return true; }
119  };
120 } // namespace swift::misc::db
121 
122 Q_DECLARE_METATYPE(swift::misc::db::CUpdateInfo)
123 
124 #endif // SWIFT_MISC_DB_UPDATEINFO_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Distributions for channel.
Definition: distribution.h:27
Multiple distributions for different channels:
Update info, i.e. artifacts and distributions.
Definition: updateinfo.h:24
bool isEmpty() const
Empty (no data)
Definition: updateinfo.h:76
const CDistributionList & getDistributions() const
Distributions (all)
Definition: updateinfo.h:64
const CArtifactList & getArtifactsXSwiftBus() const
Artifacts (xswiftbus)
Definition: updateinfo.h:51
const CArtifactList & getArtifactsPilotClient() const
Artifacts (pilot client)
Definition: updateinfo.h:44
ColumnIndex
Properties by index.
Definition: updateinfo.h:28
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition: metaclass.h:53
Base class for traits to be used as template argument to swift::misc::CData.
Definition: datacache.h:459
Trait for update info, i.e. distributions and artifacts.
Definition: updateinfo.h:113
static constexpr bool isPinned()
First load is synchronous.
Definition: updateinfo.h:118
static const char * key()
Key in data cache.
Definition: updateinfo.h:115
#define SWIFT_MISC_EXPORT
Export a class or function from the library.
#define SWIFT_DECLARE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template declaration of mixins for a CValueObject subclass to be placed near the top of the ...
Definition: valueobject.h:65