swift
distributor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2015 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_SIMULATION_DISTRIBUTOR_H
7 #define SWIFT_MISC_SIMULATION_DISTRIBUTOR_H
8 
9 #include <QJsonObject>
10 #include <QMap>
11 #include <QMetaType>
12 #include <QSet>
13 #include <QString>
14 
15 #include "misc/db/datastore.h"
16 #include "misc/metaclass.h"
17 #include "misc/orderable.h"
18 #include "misc/propertyindexref.h"
20 #include "misc/statusmessagelist.h"
21 #include "misc/swiftmiscexport.h"
22 #include "misc/valueobject.h"
23 
24 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::simulation, CDistributor)
25 
26 namespace swift::misc::simulation
27 {
30  public CValueObject<CDistributor>,
32  public IOrderable
33  {
34  public:
37  {
38  IndexDescription = CPropertyIndexRef::GlobalIndexCDistributor,
39  IndexAlias1,
40  IndexAlias2,
41  IndexSimulator
42  };
43 
45  CDistributor();
46 
48  CDistributor(const QString &key);
49 
52  const QString &id, const QString &description, const QString &alias1, const QString &alias2,
54 
56  const QString &getDescription() const { return m_description; }
57 
59  QString getIdAndDescription() const;
60 
62  void setDescription(const QString &description) { m_description = description.trimmed(); }
63 
65  bool hasDescription() const { return !m_description.isEmpty(); }
66 
68  const QString &getAlias1() const { return m_alias1; }
69 
71  const QString &getAlias2() const { return m_alias2; }
72 
74  void setAlias1(const QString &alias) { m_alias1 = alias; }
75 
77  void setAlias2(const QString &alias) { m_alias2 = alias; }
78 
80  bool hasAlias1() const { return !m_alias1.isEmpty(); }
81 
83  bool hasAlias2() const { return !m_alias2.isEmpty(); }
84 
86  const swift::misc::simulation::CSimulatorInfo &getSimulator() const { return m_simulator; }
87 
89  void setSimulator(const swift::misc::simulation::CSimulatorInfo &simulator) { m_simulator = simulator; }
90 
92  bool matchesKeyOrAlias(const QString &keyOrAlias) const;
93 
95  bool matchesKeyOrAlias(const CDistributor &distributor) const;
96 
98  bool matchesSimulator(const CSimulatorInfo &simulator) const;
99 
101  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
102 
104  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
105 
107  int comparePropertyByIndex(CPropertyIndexRef index, const CDistributor &compareValue) const;
108 
110  QString convertToQString(bool i18n = false) const;
111 
113  bool hasCompleteData() const;
114 
116  swift::misc::CStatusMessageList validate() const;
117 
119  void updateMissingParts(const CDistributor &otherDistributor);
120 
122  static CDistributor fromDatabaseJson(const QJsonObject &json, const QString &prefix = QString());
123 
126  static const QString &standardFSX();
127  static const QString &standardP3D();
128  static const QString &standardFS9();
129  static const QString &standardXPlane();
130  static const QString &standardFlightGear();
131  static const QSet<QString> &standardAllFsFamily();
132  static const QSet<QString> &xplaneMostPopular();
133  static const QString &xplaneBlueBell();
134  static const QString &xplaneXcsl();
135  static const QString &standardMsfs();
136  static const QString &standardMsfs2024();
138 
139  private:
140  QString m_description;
141  QString m_alias1;
142  QString m_alias2;
144 
146  static QString unifyKeyOrAlias(const QString &value);
147 
149  CDistributor,
151  SWIFT_METAMEMBER(loadedFromDb),
152  SWIFT_METAMEMBER(timestampMSecsSinceEpoch),
153  SWIFT_METAMEMBER(order),
154  SWIFT_METAMEMBER(description),
157  SWIFT_METAMEMBER(simulator));
158  };
159 
162 
163 } // namespace swift::misc::simulation
164 
165 Q_DECLARE_METATYPE(swift::misc::simulation::CDistributor)
166 
167 #endif // SWIFT_MISC_SIMULATION_DISTRIBUTOR_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Status messages, e.g. from Core -> GUI.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Entity with order attribute (can be manually ordered in views)
Definition: orderable.h:19
Class from which a derived class can inherit datastore-related functions.
Definition: datastore.h:166
Value object encapsulating information of software distributor.
Definition: distributor.h:33
void setDescription(const QString &description)
Set description.
Definition: distributor.h:62
const swift::misc::simulation::CSimulatorInfo & getSimulator() const
Simulator.
Definition: distributor.h:86
const QString & getDescription() const
Get description.
Definition: distributor.h:56
void setSimulator(const swift::misc::simulation::CSimulatorInfo &simulator)
Set simulator.
Definition: distributor.h:89
bool hasDescription() const
Has description.
Definition: distributor.h:65
const QString & getAlias2() const
Get alias2.
Definition: distributor.h:71
void setAlias1(const QString &alias)
Set alias1.
Definition: distributor.h:74
const QString & getAlias1() const
Get alias1.
Definition: distributor.h:68
void setAlias2(const QString &alias)
Set alias2.
Definition: distributor.h:77
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
#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
@ CaseInsensitiveComparison
Element will be compared case insensitively (must be a QString)
Definition: metaclass.h:207
#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