swift
transponder.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 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_AVIATION_TRANSPONDER_H
7 #define SWIFT_MISC_AVIATION_TRANSPONDER_H
8 
9 #include <tuple>
10 
11 #include <QHash>
12 #include <QMetaType>
13 #include <QString>
14 #include <QtGlobal>
15 
16 #include "misc/dictionary.h"
17 #include "misc/metaclass.h"
18 #include "misc/propertyindexref.h"
19 #include "misc/swiftmiscexport.h"
20 #include "misc/valueobject.h"
21 
22 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::aviation, CTransponder)
23 
24 namespace swift::misc::aviation
25 {
27  class SWIFT_MISC_EXPORT CTransponder : public CValueObject<CTransponder>
28  {
29  public:
32  {
33  StateStandby = 0,
34  ModeMil1 = 1,
35  ModeMil2 = 2,
36  ModeMil3 = 3,
37  ModeMil4 = 4,
38  ModeMil5 = 5,
39  StateIdent = 10,
40  ModeA = 11,
41  ModeC = 12,
42  ModeS = 20
43  };
44 
47  {
48  IndexMode = CPropertyIndexRef::GlobalIndexCTransponder,
49  IndexModeAsString,
50  IndexTransponderCode,
51  IndexTransponderCodeFormatted,
52  IndexTransponderCodeAndModeFormatted
53  };
54 
56  static void registerMetadata();
57 
59  CTransponder() : m_transponderCode(0), m_transponderMode(StateStandby) {}
60 
62  CTransponder(int transponderCode, TransponderMode transponderMode);
63 
65  CTransponder(int transponderCode, const QString &transponderMode);
66 
68  CTransponder(const QString &transponderCode, TransponderMode transponderMode);
69 
71  CTransponder(const QString &transponderCode, const QString &transponderMode);
72 
74  bool validValues() const;
75 
77  QString getModeAsString() const { return modeAsString(this->getTransponderMode()); }
78 
80  QString getModeAsShortString() const { return modeAsShortString(this->getTransponderMode()); }
81 
83  bool isInNormalSendingMode() const;
84 
86  bool isInStandby() const { return StateStandby == this->getTransponderMode(); }
87 
89  bool isIdentifying() const { return StateIdent == this->getTransponderMode(); }
90 
92  void setModeAsString(const QString &mode) { this->setTransponderMode(CTransponder::modeFromString(mode)); }
93 
95  TransponderMode getTransponderMode() const { return static_cast<TransponderMode>(m_transponderMode); }
96 
98  void toggleTransponderMode();
99 
101  static const QString &modeAsString(TransponderMode mode);
102 
104  static const QString &modeAsShortString(CTransponder::TransponderMode mode);
105 
107  int getTransponderCode() const { return m_transponderCode; }
108 
110  QString getTransponderCodeFormatted() const;
111 
113  QString getTransponderCodeAndModeFormatted() const;
114 
116  void setTransponderCode(int transponderCode) { m_transponderCode = transponderCode; }
117 
119  void setTransponderCode(const QString &transponderCode);
120 
122  static TransponderMode modeFromString(const QString &modeString);
123 
125  bool setTransponderMode(TransponderMode mode);
126 
128  void setEmergency() { m_transponderCode = 7700; }
129 
131  void setVFR() { m_transponderCode = 7000; }
132 
134  void setIFR() { m_transponderCode = 2000; }
135 
137  QVariant propertyByIndex(CPropertyIndexRef index) const;
138 
140  void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant);
141 
143  QString convertToQString(bool i18n = false) const;
144 
146  static bool isValidTransponderCode(const QString &transponderCode);
147 
149  static bool isValidTransponderCode(qint32 transponderMode);
150 
152  static CTransponder getStandardTransponder(qint32 transponderCode, TransponderMode mode);
153 
154  private:
156  bool isDefaultValue() const { return m_transponderCode == 0; }
157 
158  int m_transponderCode;
159  int m_transponderMode;
160 
162  CTransponder,
163  SWIFT_METAMEMBER(transponderCode),
164  SWIFT_METAMEMBER(transponderMode));
165  };
166 } // namespace swift::misc::aviation
167 
168 Q_DECLARE_METATYPE(swift::misc::aviation::CTransponder)
170 
171 #endif // SWIFT_MISC_AVIATION_TRANSPONDER_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
bool isIdentifying() const
Standby?
Definition: transponder.h:89
bool isInStandby() const
Standby?
Definition: transponder.h:86
void setModeAsString(const QString &mode)
Transponder mode as string.
Definition: transponder.h:92
void setTransponderCode(int transponderCode)
Set transponder code.
Definition: transponder.h:116
static TransponderMode modeFromString(const QString &modeString)
Mode from string.
Definition: transponder.cpp:82
int getTransponderCode() const
Transponder code.
Definition: transponder.h:107
QString getModeAsShortString() const
Transponder mode as short string.
Definition: transponder.h:80
void setEmergency()
Set emergency.
Definition: transponder.h:128
QString getModeAsString() const
Transponder mode as string.
Definition: transponder.h:77
CTransponder()
Default constructor.
Definition: transponder.h:59
TransponderMode getTransponderMode() const
Transponder mode.
Definition: transponder.h:95
#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
void registerMetadata()
Register all relevant metadata in Misc.
#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