Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
6ab2f53b
Unverified
Commit
6ab2f53b
authored
Jan 31, 2018
by
Gus Grubba
Committed by
GitHub
Jan 31, 2018
Browse files
Merge pull request #6070 from mavlink/pr-fixUnits
Fix unit translators
parents
cdb4cdfd
8a3f185e
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/FactSystem/FactMetaData.cc
View file @
6ab2f53b
...
@@ -45,25 +45,27 @@ const FactMetaData::BuiltInTranslation_s FactMetaData::_rgBuiltInTranslations[]
...
@@ -45,25 +45,27 @@ const FactMetaData::BuiltInTranslation_s FactMetaData::_rgBuiltInTranslations[]
// Translations driven by app settings
// Translations driven by app settings
const
FactMetaData
::
AppSettingsTranslation_s
FactMetaData
::
_rgAppSettingsTranslations
[]
=
{
const
FactMetaData
::
AppSettingsTranslation_s
FactMetaData
::
_rgAppSettingsTranslations
[]
=
{
{
"m"
,
"m"
,
false
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m"
,
"m"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meters"
,
"meters"
,
false
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meter"
,
"meter"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"cm/px"
,
"cm/px"
,
false
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meters"
,
"meters"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m/s"
,
"m/s"
,
true
,
UnitsSettings
::
SpeedUnitsMetersPerSecond
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"cm/px"
,
"cm/px"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"C"
,
"C"
,
false
,
UnitsSettings
::
TemperatureUnitsCelsius
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m/s"
,
"m/s"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsMetersPerSecond
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m^2"
,
"m^2"
,
false
,
UnitsSettings
::
AreaUnitsSquareMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"C"
,
"C"
,
FactMetaData
::
UnitTemperature
,
UnitsSettings
::
TemperatureUnitsCelsius
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"m"
,
"ft"
,
false
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m^2"
,
"m^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMeters
,
FactMetaData
::
_defaultTranslator
,
FactMetaData
::
_defaultTranslator
},
{
"meters"
,
"ft"
,
false
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"cm/px"
,
"in/px"
,
false
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_centimetersToInches
,
FactMetaData
::
_inchesToCentimeters
},
{
"meter"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m^2"
,
"km^2"
,
false
,
UnitsSettings
::
AreaUnitsSquareKilometers
,
FactMetaData
::
_squareMetersToSquareKilometers
,
FactMetaData
::
_squareKilometersToSquareMeters
},
{
"meters"
,
"ft"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m^2"
,
"ha"
,
false
,
UnitsSettings
::
AreaUnitsHectares
,
FactMetaData
::
_squareMetersToHectares
,
FactMetaData
::
_hectaresToSquareMeters
},
{
"cm/px"
,
"in/px"
,
FactMetaData
::
UnitDistance
,
UnitsSettings
::
DistanceUnitsFeet
,
FactMetaData
::
_centimetersToInches
,
FactMetaData
::
_inchesToCentimeters
},
{
"m^2"
,
"ft^2"
,
false
,
UnitsSettings
::
AreaUnitsSquareFeet
,
FactMetaData
::
_squareMetersToSquareFeet
,
FactMetaData
::
_squareFeetToSquareMeters
},
{
"m^2"
,
"km^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareKilometers
,
FactMetaData
::
_squareMetersToSquareKilometers
,
FactMetaData
::
_squareKilometersToSquareMeters
},
{
"m^2"
,
"ac"
,
false
,
UnitsSettings
::
AreaUnitsAcres
,
FactMetaData
::
_squareMetersToAcres
,
FactMetaData
::
_acresToSquareMeters
},
{
"m^2"
,
"ha"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsHectares
,
FactMetaData
::
_squareMetersToHectares
,
FactMetaData
::
_hectaresToSquareMeters
},
{
"m^2"
,
"mi^2"
,
false
,
UnitsSettings
::
AreaUnitsSquareMiles
,
FactMetaData
::
_squareMetersToSquareMiles
,
FactMetaData
::
_squareMilesToSquareMeters
},
{
"m^2"
,
"ft^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareFeet
,
FactMetaData
::
_squareMetersToSquareFeet
,
FactMetaData
::
_squareFeetToSquareMeters
},
{
"m/s"
,
"ft/s"
,
true
,
UnitsSettings
::
SpeedUnitsFeetPerSecond
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m^2"
,
"ac"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsAcres
,
FactMetaData
::
_squareMetersToAcres
,
FactMetaData
::
_acresToSquareMeters
},
{
"m/s"
,
"mph"
,
true
,
UnitsSettings
::
SpeedUnitsMilesPerHour
,
FactMetaData
::
_metersPerSecondToMilesPerHour
,
FactMetaData
::
_milesPerHourToMetersPerSecond
},
{
"m^2"
,
"mi^2"
,
FactMetaData
::
UnitArea
,
UnitsSettings
::
AreaUnitsSquareMiles
,
FactMetaData
::
_squareMetersToSquareMiles
,
FactMetaData
::
_squareMilesToSquareMeters
},
{
"m/s"
,
"km/h"
,
true
,
UnitsSettings
::
SpeedUnitsKilometersPerHour
,
FactMetaData
::
_metersPerSecondToKilometersPerHour
,
FactMetaData
::
_kilometersPerHourToMetersPerSecond
},
{
"m/s"
,
"ft/s"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsFeetPerSecond
,
FactMetaData
::
_metersToFeet
,
FactMetaData
::
_feetToMeters
},
{
"m/s"
,
"kn"
,
true
,
UnitsSettings
::
SpeedUnitsKnots
,
FactMetaData
::
_metersPerSecondToKnots
,
FactMetaData
::
_knotsToMetersPerSecond
},
{
"m/s"
,
"mph"
,
FactMetaData
::
UnitSpeed
,
UnitsSettings
::
SpeedUnitsMilesPerHour
,
FactMetaData
::
_metersPerSecondToMilesPerHour
,
FactMetaData
::
_milesPerHourToMetersPerSecond
},
{
"C"
,
"F"
,
false
,
UnitsSettings
::
TemperatureUnitsFarenheit
,
FactMetaData
::
_celsiusToFarenheit
,
FactMetaData
::
_farenheitToCelsius
},
{
"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
},
};
};
const
char
*
FactMetaData
::
_decimalPlacesJsonKey
=
"decimalPlaces"
;
const
char
*
FactMetaData
::
_decimalPlacesJsonKey
=
"decimalPlaces"
;
...
@@ -799,7 +801,6 @@ size_t FactMetaData::typeToSize(ValueType_t type)
...
@@ -799,7 +801,6 @@ size_t FactMetaData::typeToSize(ValueType_t type)
}
}
}
}
/// Set translators according to app settings
/// Set translators according to app settings
void
FactMetaData
::
_setAppSettingsTranslators
(
void
)
void
FactMetaData
::
_setAppSettingsTranslators
(
void
)
{
{
...
@@ -807,12 +808,12 @@ void FactMetaData::_setAppSettingsTranslators(void)
...
@@ -807,12 +808,12 @@ void FactMetaData::_setAppSettingsTranslators(void)
if
(
!
_enumStrings
.
count
()
&&
(
type
()
==
valueTypeDouble
||
type
()
==
valueTypeFloat
))
{
if
(
!
_enumStrings
.
count
()
&&
(
type
()
==
valueTypeDouble
||
type
()
==
valueTypeFloat
))
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
if
(
pAppSettingsTranslation
->
rawUnits
==
_rawUnits
.
toLower
()
&&
(
if
(
(
pAppSettingsTranslation
->
rawUnits
==
_rawUnits
&&
// Temperature
(
pAppSettingsTranslation
->
unitType
==
UnitTemperature
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
temperatureUnits
()
->
rawValue
().
toUInt
())
||
(
!
pAppSettingsTranslation
->
speed
&&
pAppSettingsTranslation
->
speedOrDistanceUnits
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
temperature
Units
()
->
rawValue
().
toUInt
())
)
||
(
pAppSettingsTranslation
->
unitType
==
UnitSpeed
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
speed
Units
()
->
rawValue
().
toUInt
())
||
(
pAppSettingsTranslation
->
rawUnits
==
_rawUnits
.
toLower
()
&&
// Speed and Distance
(
pAppSettingsTranslation
->
unitType
==
UnitDistance
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
distanceUnits
()
->
rawValue
().
toUInt
())
||
(
(
pAppSettingsTranslation
->
speed
&&
pAppSettingsTranslation
->
speedOrDistanceUnits
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
speed
Units
()
->
rawValue
().
toUInt
())
||
(
pAppSettingsTranslation
->
unitType
==
UnitArea
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
area
Units
()
->
rawValue
().
toUInt
())
))
(
!
pAppSettingsTranslation
->
speed
&&
pAppSettingsTranslation
->
speedOrDistanceUnits
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
distanceUnits
()
->
rawValue
().
toUInt
()))))
{
{
_cookedUnits
=
pAppSettingsTranslation
->
cookedUnits
;
_cookedUnits
=
pAppSettingsTranslation
->
cookedUnits
;
setTranslators
(
pAppSettingsTranslation
->
rawTranslator
,
pAppSettingsTranslation
->
cookedTranslator
);
setTranslators
(
pAppSettingsTranslation
->
rawTranslator
,
pAppSettingsTranslation
->
cookedTranslator
);
return
;
return
;
...
@@ -825,13 +826,11 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist
...
@@ -825,13 +826,11 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsDist
{
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
if
(
pAppSettingsTranslation
->
rawUnits
==
rawUnits
.
toLower
()
&&
if
(
pAppSettingsTranslation
->
rawUnits
==
rawUnits
&&
(
pAppSettingsTranslation
->
unitType
==
UnitDistance
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
distanceUnits
()
->
rawValue
().
toUInt
()))
{
(
!
pAppSettingsTranslation
->
speed
&&
pAppSettingsTranslation
->
speedOrDistanceUnits
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
distanceUnits
()
->
rawValue
().
toUInt
()))
{
return
pAppSettingsTranslation
;
return
pAppSettingsTranslation
;
}
}
}
}
return
NULL
;
return
NULL
;
}
}
...
@@ -839,10 +838,8 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea
...
@@ -839,10 +838,8 @@ const FactMetaData::AppSettingsTranslation_s* FactMetaData::_findAppSettingsArea
{
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
for
(
size_t
i
=
0
;
i
<
sizeof
(
_rgAppSettingsTranslations
)
/
sizeof
(
_rgAppSettingsTranslations
[
0
]);
i
++
)
{
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
const
AppSettingsTranslation_s
*
pAppSettingsTranslation
=
&
_rgAppSettingsTranslations
[
i
];
if
(
pAppSettingsTranslation
->
rawUnits
==
rawUnits
.
toLower
()
&&
if
(
pAppSettingsTranslation
->
rawUnits
==
rawUnits
&&
(
pAppSettingsTranslation
->
unitType
==
UnitArea
&&
pAppSettingsTranslation
->
unitOption
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
areaUnits
()
->
rawValue
().
toUInt
()))
{
(
!
pAppSettingsTranslation
->
speed
&&
pAppSettingsTranslation
->
speedOrDistanceUnits
==
qgcApp
()
->
toolbox
()
->
settingsManager
()
->
unitsSettings
()
->
areaUnits
()
->
rawValue
().
toUInt
())
)
{
return
pAppSettingsTranslation
;
return
pAppSettingsTranslation
;
}
}
}
}
...
...
src/FactSystem/FactMetaData.h
View file @
6ab2f53b
...
@@ -205,14 +205,20 @@ private:
...
@@ -205,14 +205,20 @@ private:
static
QVariant
_celsiusToFarenheit
(
const
QVariant
&
celsius
);
static
QVariant
_celsiusToFarenheit
(
const
QVariant
&
celsius
);
static
QVariant
_farenheitToCelsius
(
const
QVariant
&
farenheit
);
static
QVariant
_farenheitToCelsius
(
const
QVariant
&
farenheit
);
struct
AppSettingsTranslation_s
{
enum
UnitTypes
{
const
char
*
rawUnits
;
UnitDistance
=
0
,
const
char
*
cookedUnits
;
UnitArea
,
bool
speed
;
UnitSpeed
,
uint32_t
speedOrDistanceUnits
;
UnitTemperature
Translator
rawTranslator
;
};
Translator
cookedTranslator
;
struct
AppSettingsTranslation_s
{
const
char
*
rawUnits
;
const
char
*
cookedUnits
;
UnitTypes
unitType
;
uint32_t
unitOption
;
Translator
rawTranslator
;
Translator
cookedTranslator
;
};
};
static
const
AppSettingsTranslation_s
*
_findAppSettingsDistanceUnitsTranslation
(
const
QString
&
rawUnits
);
static
const
AppSettingsTranslation_s
*
_findAppSettingsDistanceUnitsTranslation
(
const
QString
&
rawUnits
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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