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 metaData->setQGCRebootRequired(true);
34 _horizontalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
35 }
36 return _horizontalDistanceUnitsFact;
37}
38
40{
41 if (!_verticalDistanceUnitsFact) {
42 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
43 QStringList enumStrings;
44 QVariantList enumValues;
45 enumStrings << UnitsSettings::tr("Feet") << UnitsSettings::tr("Meters");
46 enumValues << QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsFeet))
47 << QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsMeters));
49 metaData->setName(verticalDistanceUnitsName);
50 metaData->setLabel(UnitsSettings::tr("Vertical Distance"));
51 metaData->setShortDescription(UnitsSettings::tr("Display unit for altitudes and vertical heights."));
52 metaData->setEnumInfo(enumStrings, enumValues);
53 VerticalDistanceUnits defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
54 switch(QLocale::system().measurementSystem()) {
55 case QLocale::MetricSystem: {
56 defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
57 } break;
58 case QLocale::ImperialUSSystem:
59 case QLocale::ImperialUKSystem:
60 defaultVerticalAltitudeUnit = VerticalDistanceUnitsFeet;
61 break;
62 }
63 metaData->setRawDefaultValue(defaultVerticalAltitudeUnit);
64 metaData->setQGCRebootRequired(true);
65 _verticalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
66 }
67 return _verticalDistanceUnitsFact;
68}
69
71{
72 if (!_areaUnitsFact) {
73 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
74 QStringList enumStrings;
75 QVariantList enumValues;
76 enumStrings << UnitsSettings::tr("SquareFeet") << UnitsSettings::tr("SquareMeters") << UnitsSettings::tr("SquareKilometers") << UnitsSettings::tr("Hectares") << UnitsSettings::tr("Acres") << UnitsSettings::tr("SquareMiles");
77 enumValues <<
78 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareFeet)) <<
79 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareMeters)) <<
80 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareKilometers)) <<
81 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsHectares)) <<
82 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsAcres)) <<
83 QVariant::fromValue(static_cast<uint32_t>(AreaUnitsSquareMiles));
85 metaData->setName(areaUnitsName);
86 metaData->setLabel(UnitsSettings::tr("Area"));
87 metaData->setShortDescription(UnitsSettings::tr("Display unit for area measurements."));
88 metaData->setEnumInfo(enumStrings, enumValues);
89
90 AreaUnits defaultAreaUnit = AreaUnitsSquareMeters;
91 switch(QLocale::system().measurementSystem()) {
92 case QLocale::MetricSystem: {
93 defaultAreaUnit = AreaUnitsSquareMeters;
94 } break;
95 case QLocale::ImperialUSSystem:
96 case QLocale::ImperialUKSystem:
97 defaultAreaUnit = AreaUnitsSquareMiles;
98 break;
99 }
100 metaData->setRawDefaultValue(defaultAreaUnit);
101 metaData->setQGCRebootRequired(true);
102 _areaUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
103 }
104 return _areaUnitsFact;
105}
106
108{
109 if (!_speedUnitsFact) {
110 // Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
111 QStringList enumStrings;
112 QVariantList enumValues;
113 enumStrings << "Feet/second" << "Meters/second" << "Miles/hour" << "Kilometers/hour" << UnitsSettings::tr("Knots");
114 enumValues <<
115 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsFeetPerSecond)) <<
116 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsMetersPerSecond)) <<
117 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsMilesPerHour)) <<
118 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsKilometersPerHour)) <<
119 QVariant::fromValue(static_cast<uint32_t>(SpeedUnitsKnots));
121 metaData->setName(speedUnitsName);
122 metaData->setLabel(UnitsSettings::tr("Speed"));
123 metaData->setShortDescription(UnitsSettings::tr("Display unit for speed and velocity values."));
124 metaData->setEnumInfo(enumStrings, enumValues);
125
126 SpeedUnits defaultSpeedUnit = SpeedUnitsMetersPerSecond;
127 switch(QLocale::system().measurementSystem()) {
128 case QLocale::MetricSystem: {
129 defaultSpeedUnit = SpeedUnitsMetersPerSecond;
130 } break;
131 case QLocale::ImperialUSSystem:
132 case QLocale::ImperialUKSystem:
133 defaultSpeedUnit = SpeedUnitsMilesPerHour;
134 break;
135 }
136 metaData->setRawDefaultValue(defaultSpeedUnit);
137 metaData->setQGCRebootRequired(true);
138 _speedUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
139 }
140 return _speedUnitsFact;
141}
142
144{
145 if (!_temperatureUnitsFact) {
146 // Units settings can't be loaded from json since it creates an infinite loop of meta data loading.
147 QStringList enumStrings;
148 QVariantList enumValues;
149 enumStrings << UnitsSettings::tr("Celsius") << UnitsSettings::tr("Fahrenheit");
150 enumValues << QVariant::fromValue(static_cast<uint32_t>(TemperatureUnitsCelsius)) << QVariant::fromValue(static_cast<uint32_t>(TemperatureUnitsFarenheit));
152 metaData->setName(temperatureUnitsName);
153 metaData->setLabel(UnitsSettings::tr("Temperature"));
154 metaData->setShortDescription(UnitsSettings::tr("Display unit for temperature readings."));
155 metaData->setEnumInfo(enumStrings, enumValues);
156
157 TemperatureUnits defaultTemperatureUnit = TemperatureUnitsCelsius;
158 switch(QLocale::system().measurementSystem()) {
159 case QLocale::MetricSystem: {
160 defaultTemperatureUnit = TemperatureUnitsCelsius;
161 } break;
162 case QLocale::ImperialUSSystem:
163 case QLocale::ImperialUKSystem:
164 defaultTemperatureUnit = TemperatureUnitsFarenheit;
165 break;
166 }
167 metaData->setRawDefaultValue(defaultTemperatureUnit);
168 metaData->setQGCRebootRequired(true);
169 _temperatureUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
170 }
171 return _temperatureUnitsFact;
172}
173
175{
176 if (!_weightUnitsFact) {
177 // Units settings can't be loaded from json since it creates an infinite loop of meta data loading.
178 QStringList enumStrings;
179 QVariantList enumValues;
180 enumStrings << UnitsSettings::tr("Grams") << UnitsSettings::tr("Kilograms") << UnitsSettings::tr("Ounces") << UnitsSettings::tr("Pounds");
181 enumValues
182 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsGrams))
183 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsKg))
184 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsOz))
185 << QVariant::fromValue(static_cast<uint32_t>(WeightUnitsLbs));
187 metaData->setName(weightUnitsName);
188 metaData->setLabel(UnitsSettings::tr("Weight"));
189 metaData->setShortDescription(UnitsSettings::tr("Weight"));
190 metaData->setEnumInfo(enumStrings, enumValues);
191 WeightUnits defaultWeightUnit = WeightUnitsGrams;
192 switch(QLocale::system().measurementSystem()) {
193 case QLocale::MetricSystem:
194 case QLocale::ImperialUKSystem: {
195 defaultWeightUnit = WeightUnitsGrams;
196 } break;
197 case QLocale::ImperialUSSystem:
198 defaultWeightUnit = WeightUnitsOz;
199 break;
200 }
201 metaData->setRawDefaultValue(defaultWeightUnit);
202 metaData->setQGCRebootRequired(true);
203 _weightUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
204 }
205 return _weightUnitsFact;
206}
#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 setQGCRebootRequired(bool rebootRequired)
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.