swift
cloudlayer.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_WEATHER_CLOUDLAYER_H
7 #define SWIFT_MISC_WEATHER_CLOUDLAYER_H
8 
9 #include <QMetaType>
10 #include <QString>
11 #include <QVariant>
12 
13 #include "misc/aviation/altitude.h"
14 #include "misc/metaclass.h"
15 #include "misc/propertyindexref.h"
16 #include "misc/swiftmiscexport.h"
17 #include "misc/valueobject.h"
18 
19 SWIFT_DECLARE_VALUEOBJECT_MIXINS(swift::misc::weather, CCloudLayer)
20 
21 namespace swift::misc::weather
22 {
26  class SWIFT_MISC_EXPORT CCloudLayer : public CValueObject<CCloudLayer>
27  {
28  public:
30  enum Coverage
31  {
32  None,
33  Few,
34  Scattered,
35  Broken,
36  Overcast,
37  CoverageUnknown
38  };
39 
41  enum Clouds
42  {
43  NoClouds,
44  Cirrus,
45  Stratus,
46  Cumulus,
47  Thunderstorm,
48  CloudsUnknown
49  };
50 
53  {
54  NoPrecipitation,
55  Rain,
56  Snow,
57  PrecipitationUnknown
58  };
59 
62  {
63  IndexBase = swift::misc::CPropertyIndexRef::GlobalIndexCCloudLayer,
64  IndexTop,
65  IndexPrecipitationRate,
66  IndexPrecipitation,
67  IndexClouds,
68  IndexCoveragePercent
69  };
70 
72  CCloudLayer() = default;
73 
76 
79  double precipitationRate, Precipitation precipitation, Clouds clouds, Coverage coverage);
80 
82  void setBase(const misc::aviation::CAltitude &base) { m_base = base; }
83 
85  misc::aviation::CAltitude getBase() const { return m_base; }
86 
88  void setTop(const misc::aviation::CAltitude &top) { m_top = top; }
89 
91  misc::aviation::CAltitude getTop() const { return m_top; }
92 
94  void setPrecipitationRate(double rate) { m_precipitationRate = rate; }
95 
97  double getPrecipitationRate() const { return m_precipitationRate; }
98 
100  void setPrecipitation(Precipitation type) { m_precipitation = type; }
101 
103  Precipitation getPrecipitation() const { return m_precipitation; }
104 
106  void setClouds(Clouds type) { m_clouds = type; }
107 
109  Clouds getClouds() const { return m_clouds; }
110 
112  void setCoverage(Coverage coverage);
113 
115  Coverage getCoverage() const;
116 
118  void setCoveragePercent(int coverage) { m_coveragePercent = coverage; }
119 
121  int getCoveragePercent() const { return m_coveragePercent; }
122 
124  QVariant propertyByIndex(swift::misc::CPropertyIndexRef index) const;
125 
127  void setPropertyByIndex(swift::misc::CPropertyIndexRef index, const QVariant &variant);
128 
130  QString convertToQString(bool i18n = false) const;
131 
132  private:
133  aviation::CAltitude m_base;
134  aviation::CAltitude m_top;
135  double m_precipitationRate = 0;
136  Precipitation m_precipitation = NoPrecipitation;
137  Clouds m_clouds = NoClouds;
138  int m_coveragePercent {};
139 
141  CCloudLayer,
142  SWIFT_METAMEMBER(base),
143  SWIFT_METAMEMBER(top),
144  SWIFT_METAMEMBER(precipitationRate),
145  SWIFT_METAMEMBER(precipitation),
146  SWIFT_METAMEMBER(clouds),
147  SWIFT_METAMEMBER(coveragePercent));
148  };
149 } // namespace swift::misc::weather
150 
151 Q_DECLARE_METATYPE(swift::misc::weather::CCloudLayer)
155 
156 #endif // SWIFT_MISC_WEATHER_CLOUDLAYER_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
Altitude as used in aviation, can be AGL or MSL altitude.
Definition: altitude.h:52
ColumnIndex
Base class enums.
Definition: mixinindex.h:44
Value object for a cloud layer.
Definition: cloudlayer.h:27
Clouds getClouds() const
Get cloud type.
Definition: cloudlayer.h:109
Precipitation
Precipitation Type.
Definition: cloudlayer.h:53
void setBase(const misc::aviation::CAltitude &base)
Set base.
Definition: cloudlayer.h:82
int getCoveragePercent() const
Get coverage in %.
Definition: cloudlayer.h:121
misc::aviation::CAltitude getTop() const
Get layer top.
Definition: cloudlayer.h:91
CCloudLayer()=default
Default constructor.
double getPrecipitationRate() const
Get precipitation rate in mm/h.
Definition: cloudlayer.h:97
misc::aviation::CAltitude getBase() const
Get base.
Definition: cloudlayer.h:85
void setPrecipitationRate(double rate)
Set precipitation rate in mm/h.
Definition: cloudlayer.h:94
void setClouds(Clouds type)
Set cloud type.
Definition: cloudlayer.h:106
void setCoveragePercent(int coverage)
Set coverage in %.
Definition: cloudlayer.h:118
Precipitation getPrecipitation() const
Get precipitation.
Definition: cloudlayer.h:103
void setPrecipitation(Precipitation type)
Set precipitation.
Definition: cloudlayer.h:100
void setTop(const misc::aviation::CAltitude &top)
Set layer top.
Definition: cloudlayer.h:88
#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