QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
UnitsSettings.cc
Go to the documentation of this file.
1#include "UnitsSettings.h"
2
3DECLARE_SETTINGGROUP(Units, "Units")
4{
5}
6
8{
9 if (!_horizontalDistanceUnitsFact) {
10 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
11 QStringList enumStrings;
12 QVariantList enumValues;
13 enumStrings << UnitsSettings::tr("Feet") << UnitsSettings::tr("Meters");
14 enumValues << QVariant::fromValue(static_cast<uint32_t>(HorizontalDistanceUnitsFeet))
15 << QVariant::fromValue(static_cast<uint32_t>(HorizontalDistanceUnitsMeters));
17 metaData->setName(horizontalDistanceUnitsName);
18 metaData->setLabel(UnitsSettings::tr("Horizontal Distance"));
19 metaData->setShortDescription(UnitsSettings::tr("Display unit for horizontal distances and ranges."));
20 metaData->setEnumInfo(enumStrings, enumValues);
21
22 HorizontalDistanceUnits defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
23 switch(QLocale::system().measurementSystem()) {
24 case QLocale::MetricSystem: {
25 defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
26 } break;
27 case QLocale::ImperialUSSystem:
28 case QLocale::ImperialUKSystem:
29 defaultHorizontalDistanceUnit = HorizontalDistanceUnitsFeet;
30 break;
31 }
32 metaData->setRawDefaultValue(defaultHorizontalDistanceUnit);
33 _horizontalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
34 }
35 return _horizontalDistanceUnitsFact;
36}
37
39{
40 if (!_verticalDistanceUnitsFact) {
41 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
42 QStringList enumStrings;
43 QVariantList enumValues;
44 enumStrings << UnitsSettings::tr("Feet") << UnitsSettings::tr("Meters");
45 enumValues << QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsFeet))
46 << QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsMeters));
48 metaData->setName(verticalDistanceUnitsName);
49 metaData->setLabel(UnitsSettings::tr("Vertical Distance"));
50 metaData->setShortDescription(UnitsSettings::tr("Display unit for altitudes and vertical heights."));
51 metaData->setEnumInfo(enumStrings, enumValues);
52 VerticalDistanceUnits defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
53 switch(QLocale::system().measurementSystem()) {
54 case QLocale::MetricSystem: {
55 defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
56 } break;
57 case QLocale::ImperialUSSystem:
58 case QLocale::ImperialUKSystem:
59 defaultVerticalAltitudeUnit = VerticalDistanceUnitsFeet;
60 break;
61 }
62 metaData->setRawDefaultValue(defaultVerticalAltitudeUnit);
63 _verticalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
64 }
65 return _verticalDistanceUnitsFact;
66}
67
69{
70 if (!_areaUnitsFact) {
71 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
72 QStringList enumStrings;
73 QVariantList enumValues;
74 enumStrings << UnitsSettings::tr("SquareFeet") << UnitsSettings::tr("SquareMeters") << UnitsSettings::tr("SquareKilometers") << UnitsSettings::tr("Hectares") << UnitsSettings::tr("Acres") << UnitsSettings::tr("SquareMiles");
75 enumValues <<
76 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareFeet)) <<
77 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareMeters)) <<
78 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareKilometers)) <<
79 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsHectares)) <<
80 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsAcres)) <<
81 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareMiles));
83 metaData->setName(areaUnitsName);
84 metaData->setLabel(UnitsSettings::tr("Area"));
85 metaData->setShortDescription(UnitsSettings::tr("Display unit for area measurements."));
86 metaData->setEnumInfo(enumStrings, enumValues);
87
88 AreaUnits defaultAreaUnit = AreaUnitsSquareMeters;
89 switch(QLocale::system().measurementSystem()) {
90 case QLocale::MetricSystem: {
91 defaultAreaUnit = AreaUnitsSquareMeters;
92 } break;
93 case QLocale::ImperialUSSystem:
94 case QLocale::ImperialUKSystem:
95 defaultAreaUnit = AreaUnitsSquareMiles;
96 break;
97 }
98 metaData->setRawDefaultValue(defaultAreaUnit);
99 _areaUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
100 }
101 return _areaUnitsFact;
102}
103
105{
106 if (!_speedUnitsFact) {
107 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
108 QStringList enumStrings;
109 QVariantList enumValues;
110 enumStrings << "Feet/second" << "Meters/second" << "Miles/hour" << "Kilometers/hour" << UnitsSettings::tr("Knots");
111 enumValues <<
112 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsFeetPerSecond)) <<
113 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsMetersPerSecond)) <<
114 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsMilesPerHour)) <<
115 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsKilometersPerHour)) <<
116 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsKnots));
118 metaData->setName(speedUnitsName);
119 metaData->setLabel(UnitsSettings::tr("Speed"));
120 metaData->setShortDescription(UnitsSettings::tr("Display unit for speed and velocity values."));
121 metaData->setEnumInfo(enumStrings, enumValues);
122
123 SpeedUnits defaultSpeedUnit = SpeedUnitsMetersPerSecond;
124 switch(QLocale::system().measurementSystem()) {
125 case QLocale::MetricSystem: {
126 defaultSpeedUnit = SpeedUnitsMetersPerSecond;
127 } break;
128 case QLocale::ImperialUSSystem:
129 case QLocale::ImperialUKSystem:
130 defaultSpeedUnit = SpeedUnitsMilesPerHour;
131 break;
132 }
133 metaData->setRawDefaultValue(defaultSpeedUnit);
134 _speedUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
135 }
136 return _speedUnitsFact;
137}
138
140{
141 if (!_temperatureUnitsFact) {
142 // Units settings can't be loaded from json since it creates an infinite loop of meta data loading.
143 QStringList enumStrings;
144 QVariantList enumValues;
145 enumStrings << UnitsSettings::tr("Celsius") << UnitsSettings::tr("Fahrenheit");
146 enumValues << QVariant::fromValue(static_cast<uint32_t>(TemperatureUnitsCelsius)) << QVariant::fromValue(static_cast<uint32_t>(TemperatureUnitsFarenheit));
148 metaData->setName(temperatureUnitsName);
149 metaData->setLabel(UnitsSettings::tr("Temperature"));
150 metaData->setShortDescription(UnitsSettings::tr("Display unit for temperature readings."));
151 metaData->setEnumInfo(enumStrings, enumValues);
152
153 TemperatureUnits defaultTemperatureUnit = TemperatureUnitsCelsius;
154 switch(QLocale::system().measurementSystem()) {
155 case QLocale::MetricSystem: {
156 defaultTemperatureUnit = TemperatureUnitsCelsius;
157 } break;
158 case QLocale::ImperialUSSystem:
159 case QLocale::ImperialUKSystem:
160 defaultTemperatureUnit = TemperatureUnitsFarenheit;
161 break;
162 }
163 metaData->setRawDefaultValue(defaultTemperatureUnit);
164 _temperatureUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
165 }
166 return _temperatureUnitsFact;
167}
168
170{
171 if (!_weightUnitsFact) {
172 // Units settings can't be loaded from json since it creates an infinite loop of meta data loading.
173 QStringList enumStrings;
174 QVariantList enumValues;
175 enumStrings << UnitsSettings::tr("Grams") << UnitsSettings::tr("Kilograms") << UnitsSettings::tr("Ounces") << UnitsSettings::tr("Pounds");
176 enumValues
177 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsGrams))
178 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsKg))
179 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsOz))
180 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsLbs));
182 metaData->setName(weightUnitsName);
183 metaData->setLabel(UnitsSettings::tr("Weight"));
184 metaData->setShortDescription(UnitsSettings::tr("Weight"));
185 metaData->setEnumInfo(enumStrings, enumValues);
186 WeightUnits defaultWeightUnit = WeightUnitsGrams;
187 switch(QLocale::system().measurementSystem()) {
188 case QLocale::MetricSystem:
189 case QLocale::ImperialUKSystem: {
190 defaultWeightUnit = WeightUnitsGrams;
191 } break;
192 case QLocale::ImperialUSSystem:
193 defaultWeightUnit = WeightUnitsOz;
194 break;
195 }
196 metaData->setRawDefaultValue(defaultWeightUnit);
197 _weightUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
198 }
199 return _weightUnitsFact;
200}
#define DECLARE_SETTINGSFACT_NO_FUNC(CLASS, NAME)
#define DECLARE_SETTINGGROUP(NAME, GROUP)
Holds the meta data associated with a Fact.
void setShortDescription(const QString &shortDescription)
void setName(const QString &name)
void setLabel(const QString &label)
void setRawDefaultValue(const QVariant &rawDefaultValue)
void setEnumInfo(const QStringList &strings, const QVariantList &values)
A SettingsFact is Fact which holds a QSettings value.