Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
a317d9c5
Commit
a317d9c5
authored
Apr 27, 2020
by
Remek Zajac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Introduce weight unit and separate distance from altitude
parent
72c97a09
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
269 additions
and
5 deletions
+269
-5
FactMetaData.cc
src/FactSystem/FactMetaData.cc
+143
-4
FactMetaData.h
src/FactSystem/FactMetaData.h
+32
-1
QGroundControlQmlGlobal.h
src/QmlControls/QGroundControlQmlGlobal.h
+16
-0
UnitsSettings.cc
src/Settings/UnitsSettings.cc
+62
-0
UnitsSettings.h
src/Settings/UnitsSettings.h
+16
-0
No files found.
src/FactSystem/FactMetaData.cc
View file @
a317d9c5
...
...
@@ -32,6 +32,11 @@ const qreal FactMetaData::UnitConsts_s::milesToMeters = 1609.344;
const
qreal
FactMetaData
::
UnitConsts_s
::
feetToMeters
=
0.3048
;
const
qreal
FactMetaData
::
UnitConsts_s
::
inchesToCentimeters
=
2.54
;
//Weight
const
qreal
FactMetaData
::
UnitConsts_s
::
ouncesToGrams
=
28.3495
;
const
qreal
FactMetaData
::
UnitConsts_s
::
poundsToGrams
=
453.592
;
static
const
char
*
kDefaultCategory
=
QT_TRANSLATE_NOOP
(
"FactMetaData"
,
"Other"
);
static
const
char
*
kDefaultGroup
=
QT_TRANSLATE_NOOP
(
"FactMetaData"
,
"Misc"
);
...
...
@@ -51,24 +56,31 @@ const FactMetaData::AppSettingsTranslation_s FactMetaData::_rgAppSettingsTransla
{
"m"
,
"m"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meter"
,
"meter"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meters"
,
"meters"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
//NOTE: we've coined an artificial "raw unit" of "altitude metre" to separate it from the distance metre - a bit awkward but this is all the design permits
{
"alt m"
,
"m"
,
FactMetaData
::
UnitAltitude
,
UnitsSettings
::
AltitudeUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"cm/px"
,
"cm/px"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m/s"
,
"m/s"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsMetersPerSecond
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"C"
,
"C"
,
FactMetaData
::
UnitTemperature
,
UnitsSettings
::
TemperatureUnitsCelsius
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m^2"
,
"m
^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m^2"
,
"m
\u00B2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"meter"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"meters"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"alt m"
,
"ft"
,
FactMetaData
::
UnitAltitude
,
UnitsSettings
::
AltitudeUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"cm/px"
,
"in/px"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_centimetersToInches
,
FactMetaData
::
_inchesToCentimeters
},
{
"m^2"
,
"km
^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareKilometers
,
FactMetaData
::
_squareMetersToSquareKilometers
,
FactMetaData
::
_squareKilometersToSquareMeters
},
{
"m^2"
,
"km
\u00B2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareKilometers
,
FactMetaData
::
_squareMetersToSquareKilometers
,
FactMetaData
::
_squareKilometersToSquareMeters
},
{
"m^2"
,
"ha"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsHectares
,
FactMetaData
::
_squareMetersToHectares
,
FactMetaData
::
_hectaresToSquareMeters
},
{
"m^2"
,
"ft
^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareFeet
,
FactMetaData
::
_squareMetersToSquareFeet
,
FactMetaData
::
_squareFeetToSquareMeters
},
{
"m^2"
,
"ft
\u00B2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareFeet
,
FactMetaData
::
_squareMetersToSquareFeet
,
FactMetaData
::
_squareFeetToSquareMeters
},
{
"m^2"
,
"ac"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsAcres
,
FactMetaData
::
_squareMetersToAcres
,
FactMetaData
::
_acresToSquareMeters
},
{
"m^2"
,
"mi
^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMiles
,
FactMetaData
::
_squareMetersToSquareMiles
,
FactMetaData
::
_squareMilesToSquareMeters
},
{
"m^2"
,
"mi
\u00B2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMiles
,
FactMetaData
::
_squareMetersToSquareMiles
,
FactMetaData
::
_squareMilesToSquareMeters
},
{
"m/s"
,
"ft/s"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsFeetPerSecond
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m/s"
,
"mph"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsMilesPerHour
,
FactMetaData
::
_metersPerSecondToMilesPerHour
,
FactMetaData
::
_milesPerHourToMetersPerSecond
},
{
"m/s"
,
"km/h"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsKilometersPerHour
,
FactMetaData
::
_metersPerSecondToKilometersPerHour
,
FactMetaData
::
_kilometersPerHourToMetersPerSecond
},
{
"m/s"
,
"kn"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsKnots
,
FactMetaData
::
_metersPerSecondToKnots
,
FactMetaData
::
_knotsToMetersPerSecond
},
{
"C"
,
"F"
,
FactMetaData
::
UnitTemperature
,
UnitsSettings
::
TemperatureUnitsFarenheit
,
FactMetaData
::
_celsiusToFarenheit
,
FactMetaData
::
_farenheitToCelsius
},
{
"g"
,
"g"
,
FactMetaData
::
UnitWeight
,
UnitsSettings
::
WeightUnitsGrams
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"g"
,
"kg"
,
FactMetaData
::
UnitWeight
,
UnitsSettings
::
WeightUnitsKg
,
FactMetaData
::
_gramsToKilograms
,
FactMetaData
::
_kilogramsToGrams
},
{
"g"
,
"oz"
,
FactMetaData
::
UnitWeight
,
UnitsSettings
::
WeightUnitsOz
,
FactMetaData
::
_gramsToOunces
,
FactMetaData
::
_ouncesToGrams
},
{
"g"
,
"lbs"
,
FactMetaData
::
UnitWeight
,
UnitsSettings
::
WeightUnitsLbs
,
FactMetaData
::
_gramsToPunds
,
FactMetaData
::
_poundsToGrams
},
};
const
char
*
FactMetaData
::
_decimalPlacesJsonKey
=
"decimalPlaces"
;
...
...
@@ -790,6 +802,30 @@ QVariant FactMetaData::_farenheitToCelsius(const QVariant& farenheit)
return
QVariant
((
farenheit
.
toDouble
()
-
32
)
*
(
5.0
/
9.0
));
}
QVariant
FactMetaData
::
_kilogramsToGrams
(
const
QVariant
&
kg
)
{
return
QVariant
(
kg
.
toDouble
()
*
1000
);
}
QVariant
FactMetaData
::
_ouncesToGrams
(
const
QVariant
&
oz
)
{
return
QVariant
(
oz
.
toDouble
()
*
constants
.
ouncesToGrams
);
}
QVariant
FactMetaData
::
_poundsToGrams
(
const
QVariant
&
lbs
)
{
return
QVariant
(
lbs
.
toDouble
()
*
constants
.
poundsToGrams
);
}
QVariant
FactMetaData
::
_gramsToKilograms
(
const
QVariant
&
g
)
{
return
QVariant
(
g
.
toDouble
()
/
1000
);
}
QVariant
FactMetaData
::
_gramsToOunces
(
const
QVariant
&
g
)
{
return
QVariant
(
g
.
toDouble
()
/
constants
.
ouncesToGrams
);
}
QVariant
FactMetaData
::
_gramsToPunds
(
const
QVariant
&
g
)
{
return
QVariant
(
g
.
toDouble
()
/
constants
.
poundsToGrams
);
}
void
FactMetaData
::
setRawUnits
(
const
QString
&
rawUnits
)
{
_rawUnits
=
rawUnits
;
...
...
@@ -895,6 +931,9 @@ void FactMetaData::_setAppSettingsTranslators(void)
case
UnitDistance
:
settingsUnits
=
settings
->
distanceUnits
()
->
rawValue
().
toUInt
();
break
;
case
UnitAltitude
:
settingsUnits
=
settings
->
altitudeUnits
()
->
rawValue
().
toUInt
();
break
;
case
UnitSpeed
:
settingsUnits
=
settings
->
speedUnits
()
->
rawValue
().
toUInt
();
break
;
...
...
@@ -904,6 +943,9 @@ void FactMetaData::_setAppSettingsTranslators(void)
case
UnitTemperature
:
settingsUnits
=
settings
->
temperatureUnits
()
->
rawValue
().
toUInt
();
break
;
case
UnitWeight
:
settingsUnits
=
settings
->
weightUnits
()
->
rawValue
().
toUInt
();
break
;
default:
break
;
}
...
...
@@ -936,6 +978,44 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist
return
nullptr
;
}
const
FactMetaData
::
AppSettingsTranslation_s
*
FactMetaData
::
_findAppSettingsAltitudeUnitsTranslation
(
const
QString
&
rawUnits
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
if
(
rawUnits
.
toLower
()
!=
pAppSettingsTranslation
->
rawUnits
.
toLower
())
{
continue
;
}
uint
settingsUnits
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
altitudeUnits
()
->
rawValue
().
toUInt
();
if
(
pAppSettingsTranslation
->
unitType
==
UnitAltitude
&&
pAppSettingsTranslation
->
unitOption
==
settingsUnits
)
{
return
pAppSettingsTranslation
;
}
}
return
nullptr
;
}
const
FactMetaData
::
AppSettingsTranslation_s
*
FactMetaData
::
_findAppSettingsWeightUnitsTranslation
(
const
QString
&
rawUnits
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
if
(
rawUnits
.
toLower
()
!=
pAppSettingsTranslation
->
rawUnits
.
toLower
())
{
continue
;
}
uint
settingsUnits
=
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
weightUnits
()
->
rawValue
().
toUInt
();
if
(
pAppSettingsTranslation
->
unitType
==
UnitWeight
&&
pAppSettingsTranslation
->
unitOption
==
settingsUnits
)
{
return
pAppSettingsTranslation
;
}
}
return
nullptr
;
}
const
FactMetaData
::
AppSettingsTranslation_s
*
FactMetaData
::
_findAppSettingsAreaUnitsTranslation
(
const
QString
&
rawUnits
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
...
...
@@ -966,6 +1046,16 @@ QVariant FactMetaData::metersToAppSettingsDistanceUnits(const QVariant& meters)
}
}
QVariant
FactMetaData
::
metersToAppSettingsAltitudeUnits
(
const
QVariant
&
meters
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsAltitudeUnitsTranslation
(
"alt m"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
rawTranslator
(
meters
);
}
else
{
return
meters
;
}
}
QVariant
FactMetaData
::
appSettingsDistanceUnitsToMeters
(
const
QVariant
&
distance
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsDistanceUnitsTranslation
(
"m"
);
...
...
@@ -976,6 +1066,16 @@ QVariant FactMetaData::appSettingsDistanceUnitsToMeters(const QVariant& distance
}
}
QVariant
FactMetaData
::
appSettingsAltitudeUnitsToMeters
(
const
QVariant
&
distance
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsAltitudeUnitsTranslation
(
"alt m"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
cookedTranslator
(
distance
);
}
else
{
return
distance
;
}
}
QString
FactMetaData
::
appSettingsDistanceUnitsString
(
void
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsDistanceUnitsTranslation
(
"m"
);
...
...
@@ -986,6 +1086,26 @@ QString FactMetaData::appSettingsDistanceUnitsString(void)
}
}
QString
FactMetaData
::
appSettingsAltitudeUnitsString
(
void
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsAltitudeUnitsTranslation
(
"alt m"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
cookedUnits
;
}
else
{
return
QStringLiteral
(
"m"
);
}
}
QString
FactMetaData
::
appSettingsWeightUnitsString
(
void
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsWeightUnitsTranslation
(
"g"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
cookedUnits
;
}
else
{
return
QStringLiteral
(
"g"
);
}
}
QVariant
FactMetaData
::
squareMetersToAppSettingsAreaUnits
(
const
QVariant
&
squareMeters
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsAreaUnitsTranslation
(
"m^2"
);
...
...
@@ -1016,6 +1136,25 @@ QString FactMetaData::appSettingsAreaUnitsString(void)
}
}
QVariant
FactMetaData
::
gramsToAppSettingsWeightUnits
(
const
QVariant
&
grams
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsWeightUnitsTranslation
(
"g"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
rawTranslator
(
grams
);
}
else
{
return
grams
;
}
}
QVariant
FactMetaData
::
appSettingsWeightUnitsToGrams
(
const
QVariant
&
weight
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
_findAppSettingsWeightUnitsTranslation
(
"g"
);
if
(
pAppSettingsTranslation
)
{
return
pAppSettingsTranslation
->
cookedTranslator
(
weight
);
}
else
{
return
weight
;
}
}
double
FactMetaData
::
cookedIncrement
(
void
)
const
{
return
_rawTranslator
(
this
->
rawIncrement
()).
toDouble
();
...
...
src/FactSystem/FactMetaData.h
View file @
a317d9c5
...
...
@@ -69,6 +69,24 @@ public:
/// Returns the string for distance units which has configued by user
static
QString
appSettingsDistanceUnitsString
(
void
);
/// Converts from meters to the user specified altitude unit
static
QVariant
metersToAppSettingsAltitudeUnits
(
const
QVariant
&
meters
);
/// Converts from user specified altitude unit to meters
static
QVariant
appSettingsAltitudeUnitsToMeters
(
const
QVariant
&
distance
);
/// Returns the string for altitude units which has configued by user
static
QString
appSettingsAltitudeUnitsString
(
void
);
/// Converts from grams to the user specified weight unit
static
QVariant
gramsToAppSettingsWeightUnits
(
const
QVariant
&
meters
);
/// Converts from user specified weight unit to grams
static
QVariant
appSettingsWeightUnitsToGrams
(
const
QVariant
&
distance
);
/// Returns the string for weight units which has configued by user
static
QString
appSettingsWeightUnitsString
(
void
);
/// Converts from meters to the user specified distance unit
static
QVariant
squareMetersToAppSettingsAreaUnits
(
const
QVariant
&
squareMeters
);
...
...
@@ -209,12 +227,21 @@ private:
static
QVariant
_inchesToCentimeters
(
const
QVariant
&
inches
);
static
QVariant
_celsiusToFarenheit
(
const
QVariant
&
celsius
);
static
QVariant
_farenheitToCelsius
(
const
QVariant
&
farenheit
);
static
QVariant
_kilogramsToGrams
(
const
QVariant
&
kg
);
static
QVariant
_ouncesToGrams
(
const
QVariant
&
oz
);
static
QVariant
_poundsToGrams
(
const
QVariant
&
lbs
);
static
QVariant
_gramsToKilograms
(
const
QVariant
&
g
);
static
QVariant
_gramsToOunces
(
const
QVariant
&
g
);
static
QVariant
_gramsToPunds
(
const
QVariant
&
g
);
enum
UnitTypes
{
UnitDistance
=
0
,
UnitAltitude
,
UnitArea
,
UnitSpeed
,
UnitTemperature
UnitTemperature
,
UnitWeight
};
struct
AppSettingsTranslation_s
{
...
...
@@ -227,7 +254,9 @@ private:
};
static
const
AppSettingsTranslation_s
*
_findAppSettingsDistanceUnitsTranslation
(
const
QString
&
rawUnits
);
static
const
AppSettingsTranslation_s
*
_findAppSettingsAltitudeUnitsTranslation
(
const
QString
&
rawUnits
);
static
const
AppSettingsTranslation_s
*
_findAppSettingsAreaUnitsTranslation
(
const
QString
&
rawUnits
);
static
const
AppSettingsTranslation_s
*
_findAppSettingsWeightUnitsTranslation
(
const
QString
&
rawUnits
);
static
void
_loadJsonDefines
(
const
QJsonObject
&
jsonDefinesObject
,
QMap
<
QString
,
QString
>&
defineMap
);
...
...
@@ -267,6 +296,8 @@ private:
static
const
qreal
milesToMeters
;
static
const
qreal
feetToMeters
;
static
const
qreal
inchesToCentimeters
;
static
const
qreal
ouncesToGrams
;
static
const
qreal
poundsToGrams
;
}
constants
;
struct
BuiltInTranslation_s
{
...
...
src/QmlControls/QGroundControlQmlGlobal.h
View file @
a317d9c5
...
...
@@ -145,6 +145,22 @@ public:
QString
appSettingsDistanceUnitsString
(
void
)
const
{
return
FactMetaData
::
appSettingsDistanceUnitsString
();
}
/// Converts from meters to the user specified distance unit
Q_INVOKABLE
QVariant
metersToAppSettingsAltitudeUnits
(
const
QVariant
&
meters
)
const
{
return
FactMetaData
::
metersToAppSettingsAltitudeUnits
(
meters
);
}
/// Converts from user specified distance unit to meters
Q_INVOKABLE
QVariant
appSettingsAltitudeUnitsToMeters
(
const
QVariant
&
distance
)
const
{
return
FactMetaData
::
appSettingsAltitudeUnitsToMeters
(
distance
);
}
QString
appSettingsAltitudeUnitsString
(
void
)
const
{
return
FactMetaData
::
appSettingsAltitudeUnitsString
();
}
/// Converts from grams to the user specified weight unit
Q_INVOKABLE
QVariant
gramsToAppSettingsWeightUnits
(
const
QVariant
&
meters
)
const
{
return
FactMetaData
::
gramsToAppSettingsWeightUnits
(
meters
);
}
/// Converts from user specified weight unit to grams
Q_INVOKABLE
QVariant
appSettingsWeightUnitsToGrams
(
const
QVariant
&
distance
)
const
{
return
FactMetaData
::
appSettingsWeightUnitsToGrams
(
distance
);
}
QString
appSettingsWeightUnitsString
(
void
)
const
{
return
FactMetaData
::
appSettingsWeightUnitsString
();
}
/// Converts from square meters to the user specified area unit
Q_INVOKABLE
QVariant
squareMetersToAppSettingsAreaUnits
(
const
QVariant
&
meters
)
const
{
return
FactMetaData
::
squareMetersToAppSettingsAreaUnits
(
meters
);
}
...
...
src/Settings/UnitsSettings.cc
View file @
a317d9c5
...
...
@@ -47,6 +47,35 @@ DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, distanceUnits)
return
_distanceUnitsFact
;
}
DECLARE_SETTINGSFACT_NO_FUNC
(
UnitsSettings
,
altitudeUnits
)
{
if
(
!
_altitudeUnitsFact
)
{
// Distance/Area/Speed units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList
enumStrings
;
QVariantList
enumValues
;
enumStrings
<<
"Feet"
<<
"Meters"
;
enumValues
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
DistanceUnitsFeet
))
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
DistanceUnitsMeters
));
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
this
);
metaData
->
setName
(
altitudeUnitsName
);
metaData
->
setShortDescription
(
"Altitude units"
);
metaData
->
setEnumInfo
(
enumStrings
,
enumValues
);
AltitudeUnits
defaultAltitudeUnit
=
AltitudeUnitsMeters
;
switch
(
QLocale
::
system
().
measurementSystem
())
{
case
QLocale
:
:
MetricSystem
:
{
defaultAltitudeUnit
=
AltitudeUnitsMeters
;
}
break
;
case
QLocale
:
:
ImperialUSSystem
:
case
QLocale
:
:
ImperialUKSystem
:
defaultAltitudeUnit
=
AltitudeUnitsFeet
;
break
;
}
metaData
->
setRawDefaultValue
(
defaultAltitudeUnit
);
metaData
->
setQGCRebootRequired
(
true
);
_altitudeUnitsFact
=
new
SettingsFact
(
_settingsGroup
,
metaData
,
this
);
}
return
_altitudeUnitsFact
;
}
DECLARE_SETTINGSFACT_NO_FUNC
(
UnitsSettings
,
areaUnits
)
{
if
(
!
_areaUnitsFact
)
{
...
...
@@ -147,3 +176,36 @@ DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, temperatureUnits)
}
return
_temperatureUnitsFact
;
}
DECLARE_SETTINGSFACT_NO_FUNC
(
UnitsSettings
,
weightUnits
)
{
if
(
!
_weightUnitsFact
)
{
// Units settings can't be loaded from json since it creates an infinite loop of meta data loading.
QStringList
enumStrings
;
QVariantList
enumValues
;
enumStrings
<<
"Grams"
<<
"Kilograms"
<<
"Ounces"
<<
"Pounds"
;
enumValues
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
WeightUnitsGrams
))
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
WeightUnitsKg
))
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
WeightUnitsOz
))
<<
QVariant
::
fromValue
(
static_cast
<
uint32_t
>
(
WeightUnitsLbs
));
FactMetaData
*
metaData
=
new
FactMetaData
(
FactMetaData
::
valueTypeUint32
,
this
);
metaData
->
setName
(
weightUnitsName
);
metaData
->
setShortDescription
(
tr
(
"Weight units"
));
metaData
->
setEnumInfo
(
enumStrings
,
enumValues
);
WeightUnits
defaultWeightUnit
=
WeightUnitsGrams
;
switch
(
QLocale
::
system
().
measurementSystem
())
{
case
QLocale
:
:
MetricSystem
:
case
QLocale
:
:
ImperialUKSystem
:
{
defaultWeightUnit
=
WeightUnitsGrams
;
}
break
;
case
QLocale
:
:
ImperialUSSystem
:
defaultWeightUnit
=
WeightUnitsOz
;
break
;
}
metaData
->
setRawDefaultValue
(
defaultWeightUnit
);
metaData
->
setQGCRebootRequired
(
true
);
_weightUnitsFact
=
new
SettingsFact
(
_settingsGroup
,
metaData
,
this
);
}
return
_weightUnitsFact
;
}
src/Settings/UnitsSettings.h
View file @
a317d9c5
...
...
@@ -24,6 +24,11 @@ public:
DistanceUnitsMeters
};
enum
AltitudeUnits
{
AltitudeUnitsFeet
=
0
,
AltitudeUnitsMeters
};
enum
AreaUnits
{
AreaUnitsSquareFeet
=
0
,
AreaUnitsSquareMeters
,
...
...
@@ -46,17 +51,28 @@ public:
TemperatureUnitsFarenheit
,
};
enum
WeightUnits
{
WeightUnitsGrams
=
0
,
WeightUnitsKg
,
WeightUnitsOz
,
WeightUnitsLbs
};
Q_ENUM
(
DistanceUnits
)
Q_ENUM
(
AreaUnits
)
Q_ENUM
(
AltitudeUnits
)
Q_ENUM
(
SpeedUnits
)
Q_ENUM
(
TemperatureUnits
)
Q_ENUM
(
WeightUnits
)
DEFINE_SETTING_NAME_GROUP
()
DEFINE_SETTINGFACT
(
distanceUnits
)
DEFINE_SETTINGFACT
(
altitudeUnits
)
DEFINE_SETTINGFACT
(
areaUnits
)
DEFINE_SETTINGFACT
(
speedUnits
)
DEFINE_SETTINGFACT
(
temperatureUnits
)
DEFINE_SETTINGFACT
(
weightUnits
)
};
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment