swift
flightplanaircraftinfo.h
1 // SPDX-FileCopyrightText: Copyright (C) swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #ifndef SWIFT_MISC_AVIATION_FLIGHTPLAN_AIRCRAFT_INFO_H
5 #define SWIFT_MISC_AVIATION_FLIGHTPLAN_AIRCRAFT_INFO_H
6 
7 #include <QString>
8 
10 #include "misc/aviation/comnavequipment.h"
11 #include "misc/aviation/ssrequipment.h"
12 #include "misc/aviation/waketurbulencecategory.h"
13 #include "misc/swiftmiscexport.h"
14 #include "misc/valueobject.h"
15 
16 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::aviation, CFlightPlanAircraftInfo)
17 
18 namespace swift::misc::aviation
19 {
21  class SWIFT_MISC_EXPORT CFlightPlanAircraftInfo : public CValueObject<CFlightPlanAircraftInfo>
22  {
23  public:
24  CFlightPlanAircraftInfo() = default;
25 
27  CFlightPlanAircraftInfo(const CAircraftIcaoCode &aircraftIcao, const CComNavEquipment &comNavEquipment,
28  const CSsrEquipment &ssrEquipment, const CWakeTurbulenceCategory &wtc);
29 
32  explicit CFlightPlanAircraftInfo(QString equipmentCodeAndAircraft);
33 
35  QString asIcaoString() const;
36 
38  QString asFaaString() const;
39 
41  CAircraftIcaoCode getAircraftIcao() const;
42 
44  CComNavEquipment getComNavEquipment() const;
45 
47  CSsrEquipment getSsrEquipment() const;
48 
50  CWakeTurbulenceCategory getWtc() const;
51 
53  QString convertToQString(bool i18n = false) const;
54 
56  static std::tuple<CComNavEquipment, CSsrEquipment> faaCodeToEquipment(QChar equipmentCode);
57 
59  static QChar equipmentToFaaCode(const CComNavEquipment &equip, const CSsrEquipment &ssr);
60 
61  private:
62  CAircraftIcaoCode m_aircraftIcao;
63  CComNavEquipment m_comNavEquipment;
64  CSsrEquipment m_ssrEquipment;
67 
68  void parseIcaoEquipmentCode(const QString &equipment);
69  void parseFaaEquipmentCode(const QString &equipment);
70  void parseUnknownEquipmentCode(
71  const QString &equipment);
72 
75  SWIFT_METAMEMBER(aircraftIcao),
76  SWIFT_METAMEMBER(comNavEquipment),
77  SWIFT_METAMEMBER(ssrEquipment),
78  SWIFT_METAMEMBER(wtc));
79  };
80 
81 } // namespace swift::misc::aviation
82 
84 
85 #endif // SWIFT_MISC_AVIATION_FLIGHTPLAN_AIRCRAFT_INFO_H
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
Value object for ICAO classification.
Flightplan-related information about an aircraft (aircraft ICAO, equipment and WTC)
ICAO flightplan field 10b.
Definition: ssrequipment.h:16
#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
#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