6 #ifndef SWIFT_MISC_AVIATION_AIRCRAFTICAOCODE_H
7 #define SWIFT_MISC_AVIATION_AIRCRAFTICAOCODE_H
12 #include <QStringList>
15 #include "misc/aviation/waketurbulencecategory.h"
26 namespace swift::misc::aviation
37 IndexAircraftDesignator = CPropertyIndexRef::GlobalIndexCAircraftIcaoCode,
40 IndexCombinedAircraftType,
42 IndexModelDescription,
43 IndexModelIataDescription,
44 IndexModelSwiftDescription,
45 IndexCombinedDescription,
53 IndexDesignatorManufacturer
63 CAircraftIcaoCode(
const QString &icao,
const QString &combinedType,
const QString &manufacturer,
68 CAircraftIcaoCode(
const QString &icao,
const QString &iata,
const QString &combinedType,
70 bool realworld,
bool legacy,
bool military,
int rank);
73 CAircraftIcaoCode(
const QString &icao,
const QString &iata,
const QString &family,
const QString &combinedType,
74 const QString &manufacturer,
const QString &model,
const QString &modelIata,
76 bool military,
int rank);
82 QString getDesignatorDbKey()
const;
85 QString getDesignatorManufacturer()
const;
88 void setDesignator(
const QString &icaoDesignator) { m_designator = icaoDesignator.trimmed().toUpper(); }
91 bool hasDesignator()
const;
94 bool hasValidDesignator()
const;
97 bool hasKnownDesignator()
const;
100 bool hasSpecialDesignator()
const;
106 void setIataCode(
const QString &iata) { m_iataCode = iata.toUpper().trimmed(); }
112 bool isIataSameAsDesignator()
const;
118 void setFamily(
const QString &family) { m_family = family.toUpper().trimmed(); }
124 bool isFamilySameAsDesignator()
const;
130 bool hasValidCombinedType()
const;
133 QString getEngineType()
const;
136 QChar getEngineTypeChar()
const;
139 int getEnginesCount()
const;
142 QString getEngineCountString()
const;
145 QString getAircraftType()
const;
148 QChar getAircraftTypeChar()
const;
151 void setCombinedType(
const QString &type) { m_combinedType = type.trimmed().toUpper(); }
163 QString getCombinedModelDescription()
const;
166 bool matchesAnyDescription(
const QString &candidate)
const;
170 bool matchesCombinedType(
const QString &combinedType)
const;
173 bool matchesCombinedTypeAndManufacturer(
const QString &combinedType,
const QString &manufacturer)
const;
176 void setModelDescription(
const QString &modelDescription) { m_modelDescription = modelDescription.trimmed(); }
181 m_modelIataDescription = modelDescription.trimmed();
187 m_modelSwiftDescription = modelDescription.trimmed();
203 void setManufacturer(
const QString &manufacturer) { m_manufacturer = manufacturer.trimmed(); }
206 bool hasManufacturer()
const;
209 bool matchesManufacturer(
const QString &manufacturer)
const;
234 bool isDbDuplicate()
const;
237 void setCodeFlags(
bool military,
bool legacy,
bool realWorld);
240 void setMilitary(
bool military);
243 void setRealWorld(
bool realWorld);
246 void setLegacy(
bool legacy);
252 QString getRankString()
const;
255 void setRank(
int rank);
258 QString getCombinedIcaoStringWithKey()
const;
261 QString getCombinedIcaoCategoryStringWithKey()
const;
264 QString getCombinedIataStringWithKey()
const;
267 QString getCombinedFamilyStringWithKey()
const;
273 bool hasCategory()
const;
282 bool hasCompleteData()
const;
285 bool matchesDesignator(
const QString &designator,
int fuzzyMatch = -1,
int *result =
nullptr)
const;
289 bool matchesIataCode(
const QString &iata,
int fuzzyMatch = -1,
int *result =
nullptr)
const;
292 bool matchesFamily(
const QString &family,
int fuzzyMatch = -1,
int *result =
nullptr)
const;
295 bool matchesDesignatorOrIata(
const QString &icaoOrIata)
const;
298 bool matchesDesignatorIataOrFamily(
const QString &icaoIataOrFamily)
const;
310 QString convertToQString(
bool i18n =
false)
const;
319 QString asHtmlSummary()
const;
337 static bool isValidDesignator(
const QString &designator);
340 static bool isValidCombinedType(
const QString &combinedType);
343 static const QString &getUnassignedDesignator();
346 static const QString &getGliderDesignator();
352 static const QStringList &getSpecialDesignators();
355 static QString normalizeDesignator(
const QString &candidate);
358 static QStringList alternativeCombinedCodes(
const QString &combinedCode);
361 static bool isEPTEngineType(
const QChar engineType);
366 const QStringList &extraCategories = {},
371 static void addLogDetailsToList(
CStatusMessageList *log,
const CAircraftIcaoCode &icao,
const QString &message,
372 const QStringList &extraCategories = {},
376 static CAircraftIcaoCode fromDatabaseJson(
const QJsonObject &json,
const QString &prefix = QString());
378 static constexpr
int DesignatorMinLength = 2;
379 static constexpr
int DesignatorMaxLength = 5;
382 QString m_designator;
385 QString m_combinedType;
386 QString m_manufacturer;
387 QString m_modelDescription;
388 QString m_modelIataDescription;
389 QString m_modelSwiftDescription;
391 bool m_realWorld =
true;
392 bool m_legacy =
false;
393 bool m_military =
false;
398 static QString createdCombinedString(
const QString &type,
const QString &engineCount,
const QString &engine);
401 static QString createdCombinedString(
const QString &type,
int engineCount,
const QString &engine);
Non-owning reference to a CPropertyIndex with a subset of its features.
Streamable status message, e.g.
constexpr static auto SeverityInfo
Status severities.
swift::misc::StatusSeverity StatusSeverity
Status severities.
Status messages, e.g. from Core -> GUI.
Mix of the most commonly used mixin classes.
Value object for aircraft categories.
Value object for ICAO classification.
CWakeTurbulenceCategory getWtc() const
Get WTC.
bool isRealWorld() const
Real world aircraft?
bool hasModelDescription() const
Has model description?
bool hasFamily() const
Has family?
ColumnIndex
Properties by index.
const QString & getFamily() const
Family (e.g. A350)
CAircraftIcaoCode()
Default constructor.
bool hasIataCode() const
Has IATA code?
const QString & getDesignator() const
Get ICAO designator, e.g. "B737".
void setModelSwiftDescription(const QString &modelDescription)
Set the alternative swift model description.
void setCategoryId(int id)
Set category id.
const QString & getModelDescription() const
Get IACO model description, e.g. "A-330-200".
void setIataCode(const QString &iata)
Set IATA code.
void setWtc(CWakeTurbulenceCategory wtc)
Set WTC.
void setManufacturer(const QString &manufacturer)
Set the manufacturer.
const QString & getIataCode() const
IATA code.
void setCombinedType(const QString &type)
Set type.
bool isMilitary() const
Military?
void setModelIataDescription(const QString &modelDescription)
Set the alternative IATA model description.
int getRank() const
Ranking.
void setDesignator(const QString &icaoDesignator)
Set ICAO designator, e.g. "B737".
void setModelDescription(const QString &modelDescription)
Set the model description (ICAO description)
const QString & getCombinedType() const
Get type, e.g. "L2J".
const CAircraftCategory & getCategory() const
Get category.
const QString & getModelSwiftDescription() const
Get swift model description.
void setCategory(const CAircraftCategory &category)
Set category.
bool isLegacyAircraft() const
Legacy aircraft (no current ICAO code)
bool hasModelSwiftDescription() const
Has swift model description?
void setFamily(const QString &family)
Set family.
const QString & getManufacturer() const
Get manufacturer, e.g. "Airbus".
const QString & getModelIataDescription() const
Get IATA model description.
bool hasModelIataDescription() const
Has IATA model description?
bool hasValidWtc() const
Valid WTC code?
ICAO wake turbulence category.
Class from which a derived class can inherit datastore-related functions.
Physical unit length (length)
StatusSeverity
Status severities.
#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 ...