swift
Loading...
Searching...
No Matches
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"
14#include "misc/valueobject.h"
15
16SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::aviation, CFlightPlanAircraftInfo)
17
18namespace 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
42
45
48
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
74 CFlightPlanAircraftInfo,
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
Value object for ICAO classification.
Flightplan-related information about an aircraft (aircraft ICAO, equipment and WTC).
static QChar equipmentToFaaCode(const CComNavEquipment &equip, const CSsrEquipment &ssr)
Transform ICAO-based COM/NAV and SSR equipment to a single character FAA equipment code.
CWakeTurbulenceCategory getWtc() const
Get Wake Turbulence Category.
QString asIcaoString() const
Full string in ICAO format: "AIRCRAFT_ICAO/WTC-EQUIPMENT/SSR".
CSsrEquipment getSsrEquipment() const
Get SSR equipment.
static std::tuple< CComNavEquipment, CSsrEquipment > faaCodeToEquipment(QChar equipmentCode)
Transform single character FAA equipment code to ICAO-based COM/NAV and SSR equipment.
QString convertToQString(bool i18n=false) const
Cast as QString.
QString asFaaString() const
Full string in FAA format: "H/J (if heavy/super)/AIRCRAFT_ICAO/EQUIPMENT-CODE".
CAircraftIcaoCode getAircraftIcao() const
Get Aircraft ICAO.
CComNavEquipment getComNavEquipment() const
Get COM/NAV equipment.
ICAO flightplan field 10b.
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition metaclass.h:72
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition metaclass.h:52
#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