swift
matchingscript.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2019 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_MATCHINGSCRIPT_H
7 #define SWIFT_MISC_SIMULATION_MATCHINGSCRIPT_H
8 
9 #include <QObject>
10 #include <QString>
11 
14 #include "misc/aviation/livery.h"
16 #include "misc/swiftmiscexport.h"
17 
18 namespace swift::misc::simulation
19 {
21  class SWIFT_MISC_EXPORT MSInOutValues : public QObject
22  {
23  Q_OBJECT
24 
27  Q_PROPERTY(QString callsign READ getCallsign WRITE setCallsign NOTIFY callsignChanged)
28  Q_PROPERTY(QString callsignAsSet READ getCallsignAsSet)
29  Q_PROPERTY(QString flightNumber READ getFlightNumber)
30  Q_PROPERTY(
31  int dbAircraftIcaoId READ getDbAircraftIcaoId WRITE setDbAircraftIcaoId NOTIFY dbAircraftIcaoIdChanged)
32  Q_PROPERTY(int dbAirlineIcaoId READ getDbAirlineIcaoId WRITE setDbAirlineIcaoId NOTIFY dbAirlineIcaoIdChanged)
33  Q_PROPERTY(int dbLiveryId READ getDbLiveryId WRITE setDbLiveryId NOTIFY dbLiveryIdChanged)
34  Q_PROPERTY(int dbModelId READ getDbModelId WRITE setDbModelId NOTIFY dbModelIdChanged)
35  Q_PROPERTY(QString aircraftIcao READ getAircraftIcao WRITE setAircraftIcao NOTIFY aircraftIcaoChanged)
36  Q_PROPERTY(QString aircraftFamily READ getAircraftFamily)
37  Q_PROPERTY(QString airlineIcao READ getAirlineIcao WRITE setAirlineIcao NOTIFY airlineIcaoChanged)
38  Q_PROPERTY(QString virtualAirlineIcao READ getVirtualAirlineIcao WRITE setVirtualAirlineIcao NOTIFY
39  virtualAirlineIcaoChanged)
40  Q_PROPERTY(QString livery READ getLivery WRITE setLivery NOTIFY liveryChanged)
41  Q_PROPERTY(QString modelString READ getModelString WRITE setModelString NOTIFY modelStringChanged)
42  Q_PROPERTY(QString combinedType READ getCombinedType WRITE setCombinedType NOTIFY combinedTypeChanged)
43  Q_PROPERTY(QString logMessage READ getLogMessage WRITE setLogMessage NOTIFY logMessageChanged)
44  Q_PROPERTY(bool hasAircraftFamily READ hasAircraftFamily)
45  Q_PROPERTY(bool modified READ isModified WRITE setModified NOTIFY modifiedChanged)
46  Q_PROPERTY(bool rerun READ isRerun WRITE setRerun NOTIFY rerunChanged)
47  // ----- status values -------
48  Q_PROPERTY(bool hasAirlineIcao READ hasAirlineIcao)
49  Q_PROPERTY(bool hasAircraftIcao READ hasAircraftIcao)
50  Q_PROPERTY(bool hasModifiedAircraftIcaoDesignator READ hasModifiedAircraftIcaoDesignator)
51  Q_PROPERTY(bool hasModifiedAircraftFamily READ hasModifiedAircraftFamily)
52  Q_PROPERTY(bool hasModifiedAirlineIcaoDesignator READ hasModifiedAirlineIcaoDesignator)
53  Q_PROPERTY(bool hasUnmodifiedDesignators READ hasUnmodifiedDesignators)
55 
56  public:
58  Q_INVOKABLE MSInOutValues() {}
59 
61  Q_INVOKABLE MSInOutValues(const QString &cs, const QString &csAsSet, const QString &flightNumber,
62  const QString &aircraftIcao, const QString &aircraftFamily,
63  const QString &combinedType, int idAircraftIcao, const QString &airlineIcao,
64  const QString &virtualAirlineIcao, int idAirlineIcao, const QString &livery,
65  int liveryId, const QString &logMsg = {}, bool modified = false, bool rerun = false)
66  : m_callsign(cs.trimmed().toUpper()), m_callsignAsSet(csAsSet), m_flightNumber(flightNumber),
67  m_aircraftIcao(aircraftIcao.trimmed().toUpper()), m_aircraftFamily(aircraftFamily.trimmed().toUpper()),
68  m_combinedType(combinedType.trimmed().toUpper()), m_airlineIcao(airlineIcao.trimmed().toUpper()),
69  m_vAirlineIcao(virtualAirlineIcao), m_livery(livery.trimmed().toUpper()),
70  m_dbAircraftIcaoId(idAircraftIcao), m_dbAirlineIcaoId(idAirlineIcao), m_dbLiveryId(liveryId),
71  m_logMessage(logMsg), m_modified(modified), m_rerun(rerun)
72  {}
73 
75  MSInOutValues(const swift::misc::aviation::CCallsign &cs,
76  const swift::misc::aviation::CAircraftIcaoCode &aircraftIcao,
77  const swift::misc::aviation::CAirlineIcaoCode &airlineIcao, const QString &livery, int liveryId);
78 
80  MSInOutValues(const swift::misc::aviation::CCallsign &cs,
81  const swift::misc::aviation::CAircraftIcaoCode &aircraftIcao,
82  const swift::misc::aviation::CLivery &livery);
83 
85  MSInOutValues(const swift::misc::simulation::CAircraftModel &model);
86 
88  MSInOutValues(const MSInOutValues &sv);
89 
92  const QString &getCallsign() const { return m_callsign; }
93  const QString &getCallsignAsSet() const { return m_callsignAsSet; }
94  const QString &getFlightNumber() const { return m_flightNumber; }
95  void setCallsign(const QString &callsign);
97 
100  bool isFoundDbAircraftIcao() const { return m_dbAircraftIcaoId >= 0; }
101  bool isFoundDbAirlineIcao() const { return m_dbAirlineIcaoId >= 0; }
102  bool isFoundDbLivery() const { return m_dbLiveryId >= 0; }
103  bool isFoundDbModel() const { return m_dbModelId >= 0; }
104  int getDbAircraftIcaoId() const { return m_dbAircraftIcaoId; }
105  int getDbAirlineIcaoId() const { return m_dbAirlineIcaoId; }
106  int getDbLiveryId() const { return m_dbLiveryId; }
107  int getDbModelId() const { return m_dbModelId; }
108  void setDbAircraftIcaoId(int id);
109  void setDbAirlineIcaoId(int id);
110  void setDbLiveryId(int id);
111  void setDbModelId(int id);
113 
116  const QString &getAircraftIcao() const { return m_aircraftIcao; }
117  const QString &getAircraftFamily() const { return m_aircraftFamily; }
118  const QString &getAirlineIcao() const { return m_airlineIcao; }
119  const QString &getVirtualAirlineIcao() const { return m_vAirlineIcao; }
120  const QString &getLivery() const { return m_livery; }
121  const QString &getModelString() const { return m_modelString; }
122  const QString &getCombinedType() const { return m_combinedType; }
123  void setAircraftIcao(const QString &aircraftIcao);
124  void setAirlineIcao(const QString &airlineIcao);
125  void setVirtualAirlineIcao(const QString &virtualAirlineIcao);
126  void setLivery(const QString &livery);
127  void setModelString(const QString &modelString);
128  void setCombinedType(const QString &type);
129  bool hasAircraftIcao() const { return !m_aircraftIcao.isEmpty(); }
130  bool hasAirlineIcao() const { return !m_airlineIcao.isEmpty(); }
131  bool hasAircraftFamily() const { return !m_aircraftFamily.isEmpty(); }
133 
136  const QString &getLogMessage() const { return m_logMessage; }
137  void setLogMessage(const QString &msg);
139 
142  bool isModified() const { return m_modified; }
143  void setModified(bool modified);
145 
148  bool isRerun() const { return m_rerun; }
149  void setRerun(bool rerun);
151 
153  void evaluateChanges(const swift::misc::aviation::CAircraftIcaoCode &aircraft,
155 
158  bool hasModifiedAircraftIcaoDesignator() const { return m_modifiedAircraftDesignator; }
159  bool hasModifiedAirlineIcaoDesignator() const { return m_modifiedAirlineDesignator; }
160  bool hasModifiedAircraftFamily() const { return m_modifiedAircraftFamily; }
162  {
163  return !this->hasModifiedAirlineIcaoDesignator() && !this->hasModifiedAircraftIcaoDesignator();
164  }
165  bool hasChangedAircraftIcao(const swift::misc::aviation::CAircraftIcaoCode &aircraftIcao) const;
166  bool hasChangedAircraftIcaoId(const swift::misc::aviation::CAircraftIcaoCode &aircraftIcao) const;
167  bool hasChangedAirlineIcao(const swift::misc::aviation::CAirlineIcaoCode &airlineIcao) const;
168  bool hasChangedAirlineIcaoId(const swift::misc::aviation::CAirlineIcaoCode &airlineIcao) const;
169  bool hasChangedModelString(const QString &modelString) const;
170  bool hasChangedLiveryId(const swift::misc::aviation::CLivery &livery) const;
171  bool hasChangedModelId(const swift::misc::simulation::CAircraftModel &model) const;
172  bool hasChangedModel(const swift::misc::simulation::CAircraftModel &model) const;
174 
175  signals:
178 
188 
196 
199 
202 
204  void rerunChanged();
205 
206  private:
207  QString m_callsign;
208  QString m_callsignAsSet;
209  QString m_flightNumber;
210  QString m_aircraftIcao;
211  QString m_aircraftFamily;
212  QString m_combinedType;
213  QString m_airlineIcao;
214  QString m_vAirlineIcao;
215  QString m_livery;
216  QString m_modelString;
217  int m_dbAircraftIcaoId = -1;
218  int m_dbAirlineIcaoId = -1;
219  int m_dbLiveryId = -1;
220  int m_dbModelId = -1;
221  QString m_logMessage;
222  bool m_modifiedAircraftDesignator = false;
223  bool m_modifiedAircraftFamily = false;
224  bool m_modifiedAirlineDesignator = false;
225  bool m_modified = false;
226  bool m_rerun = false;
227  };
228 
230  class SWIFT_MISC_EXPORT MSModelSet : public QObject
231  {
232  Q_OBJECT
233 
236  Q_PROPERTY(QString simulator READ getSimulator WRITE setSimulator NOTIFY simulatorChanged)
237  Q_PROPERTY(bool available READ isAvailable WRITE setAvailable NOTIFY availabilityChanged)
238  Q_PROPERTY(int inputAircraftAndAirlineCount READ getInputAircraftAndAirlineCount WRITE
239  setInputAircraftAndAirlineCount NOTIFY inputAircraftAndAirlineCountChanged)
240  Q_PROPERTY(int modelSetSize READ getModelSetSize)
241  Q_PROPERTY(int countDifferentAirlines READ countVtolAircraft)
242  Q_PROPERTY(int countVtolAircraft READ countCivilianAircraft)
243  Q_PROPERTY(int countCivilianAircraft READ countCivilianAircraft)
244  Q_PROPERTY(int countMilitaryAircraft READ countMilitaryAircraft)
245  Q_PROPERTY(int countModelsWithColorLivery READ countModelsWithColorLivery)
246  Q_PROPERTY(int countModelsWithAirlineLivery READ countModelsWithAirlineLivery)
248 
249  public:
251  Q_INVOKABLE MSModelSet() {}
252 
254  const QString &getSimulator() const { return m_simulator; }
255 
257  void setSimulator(const QString &simulator);
258 
261  bool isAvailable() const { return m_available; }
262  void setAvailable(bool available);
264 
267  int getInputAircraftAndAirlineCount() const { return m_inputAircraftAndAirlineCount; }
268  void setInputAircraftAndAirlineCount(int count);
270 
273  int getModelSetSize() const { return m_modelSet.size(); }
274  int countDifferentAirlines() const { return m_modelSet.countDifferentAirlines(); }
275  int countVtolAircraft() const { return m_modelSet.countVtolAircraft(); }
276  int countCivilianAircraft() const { return m_modelSet.countCivilianAircraft(); }
277  int countMilitaryAircraft() const { return m_modelSet.countMilitaryAircraft(); }
278  int countModelsWithColorLivery() const { return m_modelSet.countModelsWithColorLivery(); }
279  int countModelsWithAirlineLivery() const { return m_modelSet.countModelsWithAirlineLivery(); }
281 
284  Q_INVOKABLE bool containsModelString(const QString &modelString) const
285  {
286  return m_modelSet.containsModelString(modelString, Qt::CaseInsensitive);
287  }
288  Q_INVOKABLE bool containsDbKey(int dbKey) const { return m_modelSet.containsDbKey(dbKey); }
289  Q_INVOKABLE bool containsCombinedType(const QString &ct) const { return m_modelSet.containsCombinedType(ct); }
291 
293  Q_INVOKABLE QString findCombinedTypeWithClosestColorLivery(const QString &combinedType,
294  const QString &rgbColor) const;
295 
297  Q_INVOKABLE QString findClosestCombinedTypeWithClosestColorLivery(const QString &combinedType,
298  const QString &rgbColor) const;
299 
301  Q_INVOKABLE QString findAircraftFamilyWithClosestColorLivery(const QString &family,
302  const QString &rgbColor) const;
303 
304  // ------- NOT EXPOSED TO JAVASCRIPT -------
305 
308 
310  void initByModelSet(const swift::misc::simulation::CAircraftModelList &modelSet);
311 
313  void initByAircraftAndAirline(const swift::misc::aviation::CAircraftIcaoCode &aircraft,
315 
316  // ------- NOT EXPOSED TO JAVASCRIPT -------
317 
318  signals:
321 
324 
327 
328  private:
329  QString m_simulator;
330  bool m_available = false;
331  int m_inputAircraftAndAirlineCount;
333  };
334 
335 } // namespace swift::misc::simulation
336 
337 #endif // SWIFT_MISC_SIMULATION_MATCHINGSCRIPT_H
Value object for ICAO classification.
Value object for ICAO classification.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Value object encapsulating information about an airpot.
Definition: livery.h:29
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Value object encapsulating a list of aircraft models.
bool hasAircraftFamily() const
Livery, airline, aircraft, model string.
void combinedTypeChanged()
Livery, airline, aircraft, or model changed.
void dbLiveryIdChanged()
DB id changed.
const QString & getFlightNumber() const
Callsign values.
void dbAirlineIcaoIdChanged()
DB id changed.
const QString & getLogMessage() const
Log. message.
bool hasUnmodifiedDesignators() const
Changed values.
int getDbAircraftIcaoId() const
Values found in DB?
void logMessageChanged()
Log. message has been changed.
void liveryChanged()
Livery, airline, aircraft, or model changed.
bool hasModifiedAircraftIcaoDesignator() const
Changed values.
bool hasModifiedAirlineIcaoDesignator() const
Changed values.
const QString & getVirtualAirlineIcao() const
Livery, airline, aircraft, model string.
int getDbAirlineIcaoId() const
Values found in DB?
void aircraftIcaoChanged()
Livery, airline, aircraft, or model changed.
bool isFoundDbLivery() const
Values found in DB?
bool isRerun() const
Request re-run.
bool hasAirlineIcao() const
Livery, airline, aircraft, model string.
int getDbLiveryId() const
Values found in DB?
const QString & getModelString() const
Livery, airline, aircraft, model string.
void virtualAirlineIcaoChanged()
Livery, airline, aircraft, or model changed.
const QString & getCombinedType() const
Livery, airline, aircraft, model string.
const QString & getLivery() const
Livery, airline, aircraft, model string.
bool isModified() const
Modified flag.
void modifiedChanged()
Modified changed.
int getDbModelId() const
Values found in DB?
bool hasAircraftIcao() const
Livery, airline, aircraft, model string.
void dbAircraftIcaoIdChanged()
DB id changed.
void airlineIcaoChanged()
Livery, airline, aircraft, or model changed.
const QString & getCallsignAsSet() const
Callsign values.
bool hasModifiedAircraftFamily() const
Changed values.
bool isFoundDbAircraftIcao() const
Values found in DB?
const QString & getAircraftFamily() const
Livery, airline, aircraft, model string.
Q_INVOKABLE MSInOutValues(const QString &cs, const QString &csAsSet, const QString &flightNumber, const QString &aircraftIcao, const QString &aircraftFamily, const QString &combinedType, int idAircraftIcao, const QString &airlineIcao, const QString &virtualAirlineIcao, int idAirlineIcao, const QString &livery, int liveryId, const QString &logMsg={}, bool modified=false, bool rerun=false)
Ctor.
const QString & getCallsign() const
Callsign values.
bool isFoundDbModel() const
Values found in DB?
void modelStringChanged()
Livery, airline, aircraft, or model changed.
const QString & getAirlineIcao() const
Livery, airline, aircraft, model string.
const QString & getAircraftIcao() const
Livery, airline, aircraft, model string.
bool isFoundDbAirlineIcao() const
Values found in DB?
void callsignChanged()
Callsign changed.
int countDifferentAirlines() const
Model set functions as properties.
int countModelsWithColorLivery() const
Model set functions as properties.
int countMilitaryAircraft() const
Model set functions as properties.
Q_INVOKABLE bool containsModelString(const QString &modelString) const
Invokable model set functions as properties.
void availabilityChanged()
Has been modified.
int getInputAircraftAndAirlineCount() const
Input aircraft/airline available flag.
const QString & getSimulator() const
Get callsign.
Q_INVOKABLE bool containsDbKey(int dbKey) const
Invokable model set functions as properties.
void inputAircraftAndAirlineCountChanged()
Aircraft and airline changed.
bool isAvailable() const
Availablity flag.
int countCivilianAircraft() const
Model set functions as properties.
Q_INVOKABLE bool containsCombinedType(const QString &ct) const
Invokable model set functions as properties.
int countModelsWithAirlineLivery() const
Model set functions as properties.
int countVtolAircraft() const
Model set functions as properties.
void simulatorChanged()
Simulator changed.
int getModelSetSize() const
Model set functions as properties.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.