swift
fsdsetup.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2016 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_NETWORK_FSDSETUP_H
7 #define SWIFT_MISC_NETWORK_FSDSETUP_H
8 
9 #include <QMetaType>
10 #include <QString>
11 
12 #include "misc/metaclass.h"
13 #include "misc/propertyindexref.h"
14 #include "misc/statusmessagelist.h"
15 #include "misc/swiftmiscexport.h"
16 #include "misc/valueobject.h"
17 
18 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::network, CFsdSetup)
19 
20 namespace swift::misc::network
21 {
23  class SWIFT_MISC_EXPORT CFsdSetup : public CValueObject<CFsdSetup>
24  {
25  public:
28  {
29  IndexTextCodec = CPropertyIndexRef::GlobalIndexCFsdSetup,
30  IndexSendReceiveDetails
31  };
32 
35  {
36  Nothing = 0,
37  SendAircraftParts = 1 << 0,
38  SendInterimPositions = 1 << 1,
39  SendGndFlag = 1 << 2,
40  ReceiveAircraftParts = 1 << 3,
41  ReceiveInterimPositions = 1 << 4,
42  ReceiveGndFlag = 1 << 5,
43  Force3LetterAirlineICAO = 1 << 6,
44  SendVisualPositions = 1 << 7,
45  ReceiveEuroscopeSimData = 1 << 8,
46  SendFplWithIcaoEquipment = 1 << 9,
47  AllSending = SendAircraftParts | SendInterimPositions | SendVisualPositions | SendGndFlag,
48  AllReceive = ReceiveAircraftParts | ReceiveInterimPositions | ReceiveGndFlag,
49  All = AllReceive | AllSending,
50  AllParts = SendAircraftParts | ReceiveAircraftParts,
51  AllSendingWithoutGnd = AllSending - SendGndFlag,
52  AllReceiveWithoutGnd = AllReceive - ReceiveGndFlag,
53  AllInterimPositions = SendInterimPositions | ReceiveInterimPositions,
54  AllWithoutGnd = AllReceiveWithoutGnd | AllSendingWithoutGnd,
55  VATSIMDefault = AllParts | Force3LetterAirlineICAO | SendVisualPositions | SendFplWithIcaoEquipment
56  };
57  Q_DECLARE_FLAGS(SendReceiveDetails, SendReceiveDetailsFlag)
58 
59 
62  static constexpr qint64 c_positionTimeOffsetMsec = 6000;
63  static constexpr qint64 c_interimPositionTimeOffsetMsec =
64  1500;
66 
68  CFsdSetup() {}
69 
71  CFsdSetup(SendReceiveDetails sendReceive);
72 
74  CFsdSetup(const QString &codec, SendReceiveDetails sendReceive = All);
75 
77  const QString &getTextCodec() const { return m_textCodec; }
78 
80  void setTextCodec(const QString &codec) { m_textCodec = codec.trimmed(); }
81 
83  SendReceiveDetails getSendReceiveDetails() const;
84 
86  void setSendReceiveDetails(SendReceiveDetails sendReceive) { m_sendReceive = sendReceive; }
87 
89  void addSendReceiveDetails(SendReceiveDetails sendReceive) { m_sendReceive |= sendReceive; }
90 
92  void removeSendReceiveDetails(SendReceiveDetails sendReceive) { m_sendReceive &= ~sendReceive; }
93 
95  void setSendReceiveDetails(bool partsSend, bool partsReceive, bool gndSend, bool gndReceive, bool interimSend,
96  bool interimReceive, bool visualSend, bool euroscopeSimDataReceive,
97  bool icaoEquipment);
98 
101  bool sendAircraftParts() const { return this->getSendReceiveDetails().testFlag(SendAircraftParts); }
102  bool sendGndFlag() const { return this->getSendReceiveDetails().testFlag(SendGndFlag); }
103  bool sendInterimPositions() const { return this->getSendReceiveDetails().testFlag(SendInterimPositions); }
104  bool sendVisualPositions() const { return this->getSendReceiveDetails().testFlag(SendVisualPositions); }
105 
106  bool receiveAircraftParts() const { return this->getSendReceiveDetails().testFlag(ReceiveAircraftParts); }
107  bool receiveGndFlag() const { return this->getSendReceiveDetails().testFlag(ReceiveGndFlag); }
108  bool receiveInterimPositions() const { return this->getSendReceiveDetails().testFlag(ReceiveInterimPositions); }
109  bool receiveEuroscopeSimData() const { return this->getSendReceiveDetails().testFlag(ReceiveEuroscopeSimData); }
111  {
112  return this->getSendReceiveDetails().testFlag(SendFplWithIcaoEquipment);
113  }
115 
119  {
120  return this->getSendReceiveDetails().testFlag(Force3LetterAirlineICAO);
121  }
122  void setForce3LetterAirlineCodes(bool force);
124 
126  CStatusMessageList validate() const;
127 
129  QVariant propertyByIndex(CPropertyIndexRef index) const;
130 
132  void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant);
133 
135  int comparePropertyByIndex(CPropertyIndexRef index, const CFsdSetup &compareValue) const;
136 
138  QString convertToQString(bool i18n = false) const;
139 
141  static QString sendReceiveDetailsToString(SendReceiveDetails details);
142 
144  static const CFsdSetup &vatsimStandard();
145 
146  private:
147  QString m_textCodec = "latin1";
148  int m_sendReceive = static_cast<int>(All);
149 
151  CFsdSetup,
152  SWIFT_METAMEMBER(textCodec),
153  SWIFT_METAMEMBER(sendReceive));
154  };
155 } // namespace swift::misc::network
156 
157 Q_DECLARE_METATYPE(swift::misc::network::CFsdSetup)
158 Q_DECLARE_METATYPE(swift::misc::network::CFsdSetup::SendReceiveDetails)
160 Q_DECLARE_OPERATORS_FOR_FLAGS(swift::misc::network::CFsdSetup::SendReceiveDetails)
161 
162 #endif // SWIFT_MISC_NETWORK_FSDSETUP_H
Non-owning reference to a CPropertyIndex with a subset of its features.
Status messages, e.g. from Core -> GUI.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
ColumnIndex
Base class enums.
Definition: mixinindex.h:44
Value object for a FSD setup.
Definition: fsdsetup.h:24
bool sendInterimPositions() const
FSD setup flags.
Definition: fsdsetup.h:103
bool receiveGndFlag() const
FSD setup flags.
Definition: fsdsetup.h:107
bool sendGndFlag() const
FSD setup flags.
Definition: fsdsetup.h:102
bool receiveInterimPositions() const
FSD setup flags.
Definition: fsdsetup.h:108
bool shouldSendFlightPlanEquipmentInIcaoFormat() const
FSD setup flags.
Definition: fsdsetup.h:110
void addSendReceiveDetails(SendReceiveDetails sendReceive)
Add send / receive details.
Definition: fsdsetup.h:89
bool receiveAircraftParts() const
FSD setup flags.
Definition: fsdsetup.h:106
void setSendReceiveDetails(SendReceiveDetails sendReceive)
Set send / receive details.
Definition: fsdsetup.h:86
const QString & getTextCodec() const
Get codec.
Definition: fsdsetup.h:77
bool sendAircraftParts() const
FSD setup flags.
Definition: fsdsetup.h:101
bool force3LetterAirlineCodes() const
Airline codes.
Definition: fsdsetup.h:118
bool receiveEuroscopeSimData() const
FSD setup flags.
Definition: fsdsetup.h:109
bool sendVisualPositions() const
FSD setup flags.
Definition: fsdsetup.h:104
void removeSendReceiveDetails(SendReceiveDetails sendReceive)
Remove send / receive details.
Definition: fsdsetup.h:92
void setTextCodec(const QString &codec)
Set codec.
Definition: fsdsetup.h:80
SendReceiveDetailsFlag
Send/receive details.
Definition: fsdsetup.h:35
#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