swift
airspaceaircraftsnapshot.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2015 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_SIMULATION_AIRSPACEAIRCRAFTANALYZER_H
7 #define SWIFT_MISC_SIMULATION_AIRSPACEAIRCRAFTANALYZER_H
8 
9 #include <QDateTime>
10 #include <QMetaType>
11 #include <QString>
12 #include <QtGlobal>
13 
15 #include "misc/metaclass.h"
16 #include "misc/pq/length.h"
17 #include "misc/pq/units.h"
18 #include "misc/propertyindexref.h"
20 #include "misc/swiftmiscexport.h"
21 #include "misc/valueobject.h"
22 
23 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::simulation, CAirspaceAircraftSnapshot)
24 
25 namespace swift::misc::simulation
26 {
28  class SWIFT_MISC_EXPORT CAirspaceAircraftSnapshot : public CValueObject<CAirspaceAircraftSnapshot>
29  {
30  public:
33 
35  CAirspaceAircraftSnapshot(const CSimulatedAircraftList &allAircraft, bool restricted = false,
36  bool renderingEnabled = true, int maxAircraft = 100,
37  const swift::misc::physical_quantities::CLength &maxRenderedDistance = { 0,
38  nullptr });
39 
41  const QDateTime getTimestamp() const { return QDateTime::fromMSecsSinceEpoch(m_timestampMsSinceEpoch); }
42 
45  {
46  return m_aircraftCallsignsByDistance;
47  }
48 
51  {
52  return m_enabledAircraftCallsignsByDistance;
53  }
54 
57  {
58  return m_disabledAircraftCallsignsByDistance;
59  }
60 
63  {
64  return m_vtolAircraftCallsignsByDistance;
65  }
66 
69  {
70  return m_enabledVtolAircraftCallsignsByDistance;
71  }
72 
74  bool isValidSnapshot() const;
75 
77  bool isValidRestricted() const { return m_restricted; }
78 
80  void setRestrictionChanged(const CAirspaceAircraftSnapshot &snapshot);
81 
83  bool isRestrictionChanged() const { return m_restrictionChanged; }
84 
86  bool isRestricted() const { return m_restricted; }
87 
89  bool isRenderingEnabled() const { return m_renderingEnabled; }
90 
92  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
93 
95  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
96 
98  QString convertToQString(bool i18n = false) const;
99 
101  const QString &generatingThreadName() const { return m_threadName; }
102 
103  private:
104  qint64 m_timestampMsSinceEpoch = -1;
105  bool m_restricted = false;
106  bool m_renderingEnabled = true;
107  bool m_restrictionChanged = false;
108  QString m_threadName;
109 
110  // remark closest aircraft always first
111  swift::misc::aviation::CCallsignSet m_aircraftCallsignsByDistance;
112 
113  swift::misc::aviation::CCallsignSet m_enabledAircraftCallsignsByDistance;
114  swift::misc::aviation::CCallsignSet m_disabledAircraftCallsignsByDistance;
115 
116  swift::misc::aviation::CCallsignSet m_vtolAircraftCallsignsByDistance;
117  swift::misc::aviation::CCallsignSet m_enabledVtolAircraftCallsignsByDistance;
118 
121  SWIFT_METAMEMBER(timestampMsSinceEpoch),
122  SWIFT_METAMEMBER(aircraftCallsignsByDistance, 0, DisabledForComparison),
123  SWIFT_METAMEMBER(enabledAircraftCallsignsByDistance, 0, DisabledForComparison),
124  SWIFT_METAMEMBER(disabledAircraftCallsignsByDistance, 0, DisabledForComparison),
125  SWIFT_METAMEMBER(vtolAircraftCallsignsByDistance, 0, DisabledForComparison),
126  SWIFT_METAMEMBER(enabledVtolAircraftCallsignsByDistance, 0, DisabledForComparison));
127  };
128 } // namespace swift::misc::simulation
129 
131 
132 #endif // SWIFT_MISC_SIMULATION_AIRSPACEAIRCRAFTANALYZER_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
Value object for a set of callsigns.
Definition: callsignset.h:26
Physical unit length (length)
Definition: length.h:18
const swift::misc::aviation::CCallsignSet & getDisabledAircraftCallsignsByDistance() const
Callsigns by distance, only disabled aircraft.
const QDateTime getTimestamp() const
Time when snapshot was taken.
const QString & generatingThreadName() const
Generating thread name.
bool isRenderingEnabled() const
Rendering enabled or all aircraft disabled?
bool isRestrictionChanged() const
Did the restriction flag change?
const swift::misc::aviation::CCallsignSet & getEnabledAircraftCallsignsByDistance() const
Callsigns by distance, only enabled aircraft.
const swift::misc::aviation::CCallsignSet & getVtolAircraftCallsignsByDistance() const
VTOL aircraft callsigns by distance, only enabled aircraft.
const swift::misc::aviation::CCallsignSet & getAircraftCallsignsByDistance() const
Callsigns by distance.
const swift::misc::aviation::CCallsignSet & getEnabledVtolAircraftCallsignsByDistance() const
VTOL aircraft callsigns by distance, only enabled aircraft.
Value object encapsulating a list of aircraft.
#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
@ DisabledForComparison
Element will be ignored by compare() and comparison operators.
Definition: metaclass.h:202
#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