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->setShortDescription(UnitsSettings::tr("Horizontal Distance"));
19 metaData->setEnumInfo(enumStrings, enumValues);
20
21 HorizontalDistanceUnits defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
22 switch(QLocale::system().measurementSystem()) {
23 case QLocale::MetricSystem: {
24 defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
25 } break;
26 case QLocale::ImperialUSSystem:
27 case QLocale::ImperialUKSystem:
28 defaultHorizontalDistanceUnit = HorizontalDistanceUnitsFeet;
29 break;
30 }
31 metaData->setRawDefaultValue(defaultHorizontalDistanceUnit);
32 metaData->setQGCRebootRequired(true);
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->setShortDescription(UnitsSettings::tr("Vertical Distance"));
50 metaData->setEnumInfo(enumStrings, enumValues);
51 VerticalDistanceUnits defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
52 switch(QLocale::system().measurementSystem()) {
53 case QLocale::MetricSystem: {
54 defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
55 } break;
56 case QLocale::ImperialUSSystem:
57 case QLocale::ImperialUKSystem:
58 defaultVerticalAltitudeUnit = VerticalDistanceUnitsFeet;
59 break;
60 }
61 metaData->setRawDefaultValue(defaultVerticalAltitudeUnit);
62 metaData->setQGCRebootRequired(true);
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->setShortDescription(UnitsSettings::tr("Area"));
85 metaData->setEnumInfo(enumStrings, enumValues);
86
87 AreaUnits defaultAreaUnit = AreaUnitsSquareMeters;
88 switch(QLocale::system().measurementSystem()) {
89 case QLocale::MetricSystem: {
90 defaultAreaUnit = AreaUnitsSquareMeters;
91 } break;
92 case QLocale::ImperialUSSystem:
93 case QLocale::ImperialUKSystem:
94 defaultAreaUnit = AreaUnitsSquareMiles;
95 break;
96 }
97 metaData->setRawDefaultValue(defaultAreaUnit);
98 metaData->setQGCRebootRequired(true);
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->setShortDescription(UnitsSettings::tr("Speed"));
120 metaData->setEnumInfo(enumStrings, enumValues);
121
122 SpeedUnits defaultSpeedUnit = SpeedUnitsMetersPerSecond;
123 switch(QLocale::system().measurementSystem()) {
124 case QLocale::MetricSystem: {
125 defaultSpeedUnit = SpeedUnitsMetersPerSecond;
126 } break;
127 case QLocale::ImperialUSSystem:
128 case QLocale::ImperialUKSystem:
129 defaultSpeedUnit = SpeedUnitsMilesPerHour;
130 break;
131 }
132 metaData->setRawDefaultValue(defaultSpeedUnit);
133 metaData->setQGCRebootRequired(true);
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->setShortDescription(UnitsSettings::tr("Temperature"));
150 metaData->setEnumInfo(enumStrings, enumValues);
151
152 TemperatureUnits defaultTemperatureUnit = TemperatureUnitsCelsius;
153 switch(QLocale::system().measurementSystem()) {
154 case QLocale::MetricSystem: {
155 defaultTemperatureUnit = TemperatureUnitsCelsius;
156 } break;
157 case QLocale::ImperialUSSystem:
158 case QLocale::ImperialUKSystem:
159 defaultTemperatureUnit = TemperatureUnitsFarenheit;
160 break;
161 }
162 metaData->setRawDefaultValue(defaultTemperatureUnit);
163 metaData->setQGCRebootRequired(true);
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->setShortDescription(UnitsSettings::tr("Weight"));
184 metaData->setEnumInfo(enumStrings, enumValues);
185 WeightUnits defaultWeightUnit = WeightUnitsGrams;
186 switch(QLocale::system().measurementSystem()) {
187 case QLocale::MetricSystem:
188 case QLocale::ImperialUKSystem: {
189 defaultWeightUnit = WeightUnitsGrams;
190 } break;
191 case QLocale::ImperialUSSystem:
192 defaultWeightUnit = WeightUnitsOz;
193 break;
194 }
195 metaData->setRawDefaultValue(defaultWeightUnit);
196 metaData->setQGCRebootRequired(true);
197 _weightUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
198 }
199 return _weightUnitsFact;
200}
#define DECLARE_SETTINGSFACT_NO_FUNC(CLASS, NAME)
#define DECLARE_SETTINGGROUP(NAME, GROUP)
void setShortDescription(const QString &shortDescription)
void setQGCRebootRequired(bool rebootRequired)
void setName(const QString &name)
void setRawDefaultValue(const QVariant &rawDefaultValue)
void setEnumInfo(const QStringList &strings, const QVariantList &values)
A SettingsFact is Fact which holds a QSettings value.