Commit 988fb700 authored by Remek Zajac's avatar Remek Zajac

review comments

parent a317d9c5
......@@ -434,6 +434,7 @@ contains (DEFINES, QGC_ENABLE_PAIRING) {
#
HEADERS += \
src/QmlControls/QmlUnitsConversion.h \
src/api/QGCCorePlugin.h \
src/api/QGCOptions.h \
src/api/QGCSettings.h \
......
......@@ -151,7 +151,7 @@ SetupPage {
}
function _radiansToHeading(radians) {
var geometricAngle = QGroundControl.radiansToDegrees(radians)
var geometricAngle = QGroundControl.unitsConversion.radiansToDegrees(radians)
var headingAngle = 90 - geometricAngle
if (headingAngle < 0) {
headingAngle += 360
......@@ -163,7 +163,7 @@ SetupPage {
function _headingToRadians(heading) {
var geometricAngle = -(heading - 90)
return QGroundControl.degreesToRadians(geometricAngle)
return QGroundControl.unitsConversion.degreesToRadians(geometricAngle)
}
APMFollowComponentController {
......@@ -419,7 +419,7 @@ SetupPage {
QGCLabel {
id: distanceLabel
anchors.centerIn: distanceLine
text: controller.distance.valueString + " " + QGroundControl.appSettingsDistanceUnitsString
text: controller.distance.valueString + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
transform: Rotation {
origin.x: distanceLabel.width / 2
......@@ -497,7 +497,7 @@ SetupPage {
QGCLabel {
id: heightValueLabel
anchors.centerIn: parent
text: controller.height.valueString + " " + QGroundControl.appSettingsDistanceUnitsString
text: controller.height.valueString + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
}
}
......
......@@ -198,7 +198,7 @@ SetupPage {
}
QGCLabel {
text: qsTr("Minimum Distance: (") + QGroundControl.appSettingsDistanceUnitsString + ")"
text: qsTr("Minimum Distance: (") + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString + ")"
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
}
......@@ -209,15 +209,15 @@ SetupPage {
Layout.minimumHeight: ScreenTools.defaultFontPixelHeight * 2
Layout.fillWidth: true
Layout.fillHeight: true
maximumValue: QGroundControl.metersToAppSettingsDistanceUnits(15)
minimumValue: QGroundControl.metersToAppSettingsDistanceUnits(1)
maximumValue: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(15)
minimumValue: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(1)
stepSize: 1
displayValue: true
updateValueWhileDragging: false
Layout.alignment: Qt.AlignVCenter
value: {
if (_collisionPrevention && _collisionPrevention.rawValue > 0) {
return QGroundControl.metersToAppSettingsDistanceUnits(_collisionPrevention.rawValue)
return QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_collisionPrevention.rawValue)
} else {
return 1;
}
......@@ -226,7 +226,7 @@ SetupPage {
if(_collisionPrevention) {
//-- Negative means disabled
if(_collisionPrevention.rawValue >= 0) {
_collisionPrevention.rawValue = QGroundControl.appSettingsDistanceUnitsToMeters(value)
_collisionPrevention.rawValue = QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsToMeters(value)
}
}
}
......
This diff is collapsed.
......@@ -60,29 +60,29 @@ public:
const FactMetaData& operator=(const FactMetaData& other);
/// Converts from meters to the user specified distance unit
static QVariant metersToAppSettingsDistanceUnits(const QVariant& meters);
/// Converts from meters to the user specified horizontal distance unit
static QVariant metersToAppSettingsHorizontalDistanceUnits(const QVariant& meters);
/// Converts from user specified distance unit to meters
static QVariant appSettingsDistanceUnitsToMeters(const QVariant& distance);
/// Converts from user specified horizontal distance unit to meters
static QVariant appSettingsHorizontalDistanceUnitsToMeters(const QVariant& distance);
/// Returns the string for distance units which has configued by user
static QString appSettingsDistanceUnitsString(void);
/// Returns the string for horizontal distance units which has configued by user
static QString appSettingsHorizontalDistanceUnitsString(void);
/// Converts from meters to the user specified altitude unit
static QVariant metersToAppSettingsAltitudeUnits(const QVariant& meters);
/// Converts from meters to the user specified vertical distance unit
static QVariant metersToAppSettingsVerticalDistanceUnits(const QVariant& meters);
/// Converts from user specified altitude unit to meters
static QVariant appSettingsAltitudeUnitsToMeters(const QVariant& distance);
/// Converts from user specified vertical distance unit to meters
static QVariant appSettingsVerticalDistanceUnitsToMeters(const QVariant& distance);
/// Returns the string for altitude units which has configued by user
static QString appSettingsAltitudeUnitsString(void);
/// Returns the string for vertical distance units which has configued by user
static QString appSettingsVerticalDistanceUnitsString(void);
/// Converts from grams to the user specified weight unit
static QVariant gramsToAppSettingsWeightUnits(const QVariant& meters);
static QVariant gramsToAppSettingsWeightUnits(const QVariant& grams);
/// Converts from user specified weight unit to grams
static QVariant appSettingsWeightUnitsToGrams(const QVariant& distance);
static QVariant appSettingsWeightUnitsToGrams(const QVariant& weight);
/// Returns the string for weight units which has configued by user
static QString appSettingsWeightUnitsString(void);
......@@ -236,8 +236,8 @@ private:
enum UnitTypes {
UnitDistance = 0,
UnitAltitude,
UnitHorizontalDistance = 0,
UnitVerticalDistance,
UnitArea,
UnitSpeed,
UnitTemperature,
......@@ -245,16 +245,16 @@ private:
};
struct AppSettingsTranslation_s {
QString rawUnits;
const char* cookedUnits;
UnitTypes unitType;
uint32_t unitOption;
Translator rawTranslator;
Translator cookedTranslator;
QString 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* _findAppSettingsAltitudeUnitsTranslation(const QString& rawUnits);
static const AppSettingsTranslation_s* _findAppSettingsHorizontalDistanceUnitsTranslation(const QString& rawUnits);
static const AppSettingsTranslation_s* _findAppSettingsVerticalDistanceUnitsTranslation(const QString& rawUnits);
static const AppSettingsTranslation_s* _findAppSettingsAreaUnitsTranslation(const QString& rawUnits);
static const AppSettingsTranslation_s* _findAppSettingsWeightUnitsTranslation(const QString& rawUnits);
......
......@@ -67,14 +67,14 @@ Rectangle {
QGCLabel {
id: altField
anchors.horizontalCenter: parent.horizontalCenter
text: newAltitudeAppUnits + " " + QGroundControl.appSettingsDistanceUnitsString
text: newAltitudeAppUnits + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
property real altGainRange: Math.max(_sliderMaxAlt - _vehicleAltitude, 0)
property real altLossRange: Math.max(_vehicleAltitude - _sliderMinAlt, 0)
property real altExp: Math.pow(altSlider.value, 3)
property real altLossGain: altExp * (altSlider.value > 0 ? altGainRange : altLossRange)
property real newAltitudeMeters: _vehicleAltitude + altLossGain
property string newAltitudeAppUnits: QGroundControl.metersToAppSettingsDistanceUnits(newAltitudeMeters).toFixed(1)
property string newAltitudeAppUnits: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(newAltitudeMeters).toFixed(1)
function setToMinimumTakeoff() {
altSlider.value = Math.pow(activeVehicle.minimumTakeoffAltitude() / altGainRange, 1.0/3.0)
......
......@@ -84,7 +84,7 @@ MapQuickItem {
visible: _adsbVehicle ? !isNaN(altitude) : _multiVehicle
property string vehicleLabelText: visible ?
(_adsbVehicle ?
QGroundControl.metersToAppSettingsDistanceUnits(altitude).toFixed(0) + " " + QGroundControl.appSettingsDistanceUnitsString :
QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(altitude).toFixed(0) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString :
(_multiVehicle ? qsTr("Vehicle %1").arg(vehicle.id) : "")) :
""
......
......@@ -84,8 +84,8 @@ void KMLPlanDomDocument::_addFlightPath(Vehicle* vehicle, QList<MissionItem*> rg
QString htmlString;
htmlString += QStringLiteral("Index: %1\n").arg(item->sequenceNumber());
htmlString += uiInfo->friendlyName() + "\n";
htmlString += QStringLiteral("Alt AMSL: %1 %2\n").arg(QString::number(FactMetaData::metersToAppSettingsDistanceUnits(coord.altitude()).toDouble(), 'f', 2)).arg(FactMetaData::appSettingsDistanceUnitsString());
htmlString += QStringLiteral("Alt Rel: %1 %2\n").arg(QString::number(FactMetaData::metersToAppSettingsDistanceUnits(coord.altitude() - homeCoord.altitude()).toDouble(), 'f', 2)).arg(FactMetaData::appSettingsDistanceUnitsString());
htmlString += QStringLiteral("Alt AMSL: %1 %2\n").arg(QString::number(FactMetaData::metersToAppSettingsHorizontalDistanceUnits(coord.altitude()).toDouble(), 'f', 2)).arg(FactMetaData::appSettingsHorizontalDistanceUnitsString());
htmlString += QStringLiteral("Alt Rel: %1 %2\n").arg(QString::number(FactMetaData::metersToAppSettingsHorizontalDistanceUnits(coord.altitude() - homeCoord.altitude()).toDouble(), 'f', 2)).arg(FactMetaData::appSettingsHorizontalDistanceUnitsString());
htmlString += QStringLiteral("Lat: %1\n").arg(QString::number(coord.latitude(), 'f', 7));
htmlString += QStringLiteral("Lon: %1\n").arg(QString::number(coord.longitude(), 'f', 7));
QDomCDATASection cdataSection = createCDATASection(htmlString);
......
......@@ -460,8 +460,8 @@ Item {
sourceItem: HeightIndicator {
map: _root.map
heightText: Math.floor(QGroundControl.metersToAppSettingsDistanceUnits(_transitionAltitudeMeters)) +
QGroundControl.appSettingsDistanceUnitsString + "<sup>*</sup>"
heightText: Math.floor(QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_transitionAltitudeMeters)) +
QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString + "<sup>*</sup>"
}
function recalc() {
......@@ -492,8 +492,8 @@ Item {
sourceItem: HeightIndicator {
map: _root.map
heightText: Math.floor(QGroundControl.metersToAppSettingsDistanceUnits(_midSlopeAltitudeMeters)) +
QGroundControl.appSettingsDistanceUnitsString + "<sup>*</sup>"
heightText: Math.floor(QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_midSlopeAltitudeMeters)) +
QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString + "<sup>*</sup>"
}
function recalc() {
......@@ -527,7 +527,7 @@ Item {
sourceItem: HeightIndicator {
map: _root.map
heightText: _missionItem.loiterAltitude.value.toFixed(1) + QGroundControl.appSettingsDistanceUnitsString
heightText: _missionItem.loiterAltitude.value.toFixed(1) + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
}
}
}
......
......@@ -50,13 +50,13 @@ Item {
property real _controllerProgressPct: _controllerValid ? _planMasterController.missionController.progressPct : 0
property bool _syncInProgress: _controllerValid ? _planMasterController.missionController.syncInProgress : false
property string _distanceText: isNaN(_distance) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_distance).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _altDifferenceText: isNaN(_altDifference) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_altDifference).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _distanceText: isNaN(_distance) ? "-.-" : QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_distance).toFixed(1) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
property string _altDifferenceText: isNaN(_altDifference) ? "-.-" : QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_altDifference).toFixed(1) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
property string _gradientText: isNaN(_gradient) ? "-.-" : _gradient.toFixed(0) + " %"
property string _azimuthText: isNaN(_azimuth) ? "-.-" : Math.round(_azimuth) % 360
property string _headingText: isNaN(_azimuth) ? "-.-" : Math.round(_heading) % 360
property string _missionDistanceText: isNaN(_missionDistance) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_missionDistance).toFixed(0) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _missionMaxTelemetryText: isNaN(_missionMaxTelemetry) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_missionMaxTelemetry).toFixed(0) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _missionDistanceText: isNaN(_missionDistance) ? "-.-" : QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_missionDistance).toFixed(0) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
property string _missionMaxTelemetryText: isNaN(_missionMaxTelemetry) ? "-.-" : QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(_missionMaxTelemetry).toFixed(0) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
property string _batteryChangePointText: _batteryChangePoint < 0 ? "N/A" : _batteryChangePoint
property string _batteriesRequiredText: _batteriesRequired < 0 ? "N/A" : _batteriesRequired
......
......@@ -221,13 +221,13 @@ Rectangle {
QGCLabel { text: missionItem.layers.valueString }
QGCLabel { text: qsTr("Layer Height") }
QGCLabel { text: missionItem.cameraCalc.adjustedFootprintFrontal.valueString + " " + QGroundControl.appSettingsDistanceUnitsString }
QGCLabel { text: missionItem.cameraCalc.adjustedFootprintFrontal.valueString + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString }
QGCLabel { text: qsTr("Top Layer Alt") }
QGCLabel { text: QGroundControl.metersToAppSettingsDistanceUnits(missionItem.topFlightAlt).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString }
QGCLabel { text: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(missionItem.topFlightAlt).toFixed(1) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString }
QGCLabel { text: qsTr("Bottom Layer Alt") }
QGCLabel { text: QGroundControl.metersToAppSettingsDistanceUnits(missionItem.bottomFlightAlt).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString }
QGCLabel { text: QGroundControl.unitsConversion.metersToAppSettingsHorizontalDistanceUnits(missionItem.bottomFlightAlt).toFixed(1) + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString }
QGCLabel { text: qsTr("Photo Count") }
QGCLabel { text: missionItem.cameraShots }
......@@ -236,7 +236,7 @@ Rectangle {
QGCLabel { text: missionItem.timeBetweenShots.toFixed(1) + " " + qsTr("secs") }
QGCLabel { text: qsTr("Trigger Distance") }
QGCLabel { text: missionItem.cameraCalc.adjustedFootprintSide.valueString + " " + QGroundControl.appSettingsDistanceUnitsString }
QGCLabel { text: missionItem.cameraCalc.adjustedFootprintSide.valueString + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString }
}
} // Grid Column
......
......@@ -14,7 +14,7 @@ Grid {
columnSpacing: ScreenTools.defaultFontPixelWidth
QGCLabel { text: qsTr("Survey Area") }
QGCLabel { text: QGroundControl.squareMetersToAppSettingsAreaUnits(missionItem.coveredArea).toFixed(2) + " " + QGroundControl.appSettingsAreaUnitsString }
QGCLabel { text: QGroundControl.unitsConversion.squareMetersToAppSettingsAreaUnits(missionItem.coveredArea).toFixed(2) + " " + QGroundControl.unitsConversion.appSettingsAreaUnitsString }
QGCLabel { text: qsTr("Photo Count") }
QGCLabel { text: missionItem.cameraShots }
......
......@@ -18,13 +18,13 @@
#include "QGCApplication.h"
#include "LinkManager.h"
#include "SettingsFact.h"
#include "FactMetaData.h"
#include "SimulatedPosition.h"
#include "QGCLoggingCategory.h"
#include "AppSettings.h"
#include "AirspaceManager.h"
#include "ADSBVehicleManager.h"
#include "QGCPalette.h"
#include "QmlUnitsConversion.h"
#if defined(QGC_ENABLE_PAIRING)
#include "PairingManager.h"
#endif
......@@ -83,6 +83,7 @@ public:
Q_PROPERTY(bool microhardSupported READ microhardSupported CONSTANT)
Q_PROPERTY(bool supportsPairing READ supportsPairing CONSTANT)
Q_PROPERTY(QGCPalette* globalPalette MEMBER _globalPalette CONSTANT) // This palette will always return enabled colors
Q_PROPERTY(QmlUnitsConversion* unitsConversion READ unitsConversion CONSTANT)
#if defined(QGC_ENABLE_PAIRING)
Q_PROPERTY(PairingManager* pairingManager READ pairingManager CONSTANT)
#endif
......@@ -114,10 +115,6 @@ public:
Q_PROPERTY(QString missionFileExtension READ missionFileExtension CONSTANT)
Q_PROPERTY(QString telemetryFileExtension READ telemetryFileExtension CONSTANT)
/// Returns the string for distance units which has configued by user
Q_PROPERTY(QString appSettingsDistanceUnitsString READ appSettingsDistanceUnitsString CONSTANT)
Q_PROPERTY(QString appSettingsAreaUnitsString READ appSettingsAreaUnitsString CONSTANT)
Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT)
Q_PROPERTY(bool skipSetupPage READ skipSetupPage WRITE setSkipSetupPage NOTIFY skipSetupPageChanged)
......@@ -137,38 +134,6 @@ public:
Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText);
Q_INVOKABLE void stopOneMockLink (void);
/// Converts from meters to the user specified distance unit
Q_INVOKABLE QVariant metersToAppSettingsDistanceUnits(const QVariant& meters) const { return FactMetaData::metersToAppSettingsDistanceUnits(meters); }
/// Converts from user specified distance unit to meters
Q_INVOKABLE QVariant appSettingsDistanceUnitsToMeters(const QVariant& distance) const { return FactMetaData::appSettingsDistanceUnitsToMeters(distance); }
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); }
/// Converts from user specified area unit to square meters
Q_INVOKABLE QVariant appSettingsAreaUnitsToSquareMeters(const QVariant& area) const { return FactMetaData::appSettingsAreaUnitsToSquareMeters(area); }
QString appSettingsAreaUnitsString(void) const { return FactMetaData::appSettingsAreaUnitsString(); }
/// Returns the list of available logging category names.
Q_INVOKABLE QStringList loggingCategories(void) const { return QGCLoggingCategoryRegister::instance()->registeredCategories(); }
......@@ -183,9 +148,6 @@ public:
Q_INVOKABLE bool linesIntersect(QPointF xLine1, QPointF yLine1, QPointF xLine2, QPointF yLine2);
Q_INVOKABLE double degreesToRadians(double degrees) { return qDegreesToRadians(degrees); }
Q_INVOKABLE double radiansToDegrees(double radians) { return qRadiansToDegrees(radians); }
// Property accesors
QString appName () { return qgcApp()->applicationName(); }
......@@ -201,6 +163,7 @@ public:
FactGroup* gpsRtkFactGroup () { return _gpsRtkFactGroup; }
AirspaceManager* airspaceManager () { return _airspaceManager; }
ADSBVehicleManager* adsbVehicleManager () { return _adsbVehicleManager; }
QmlUnitsConversion* unitsConversion () { return &_unitsConversion; }
#if defined(QGC_ENABLE_PAIRING)
bool supportsPairing () { return true; }
PairingManager* pairingManager () { return _pairingManager; }
......@@ -299,6 +262,7 @@ private:
MicrohardManager* _microhardManager = nullptr;
ADSBVehicleManager* _adsbVehicleManager = nullptr;
QGCPalette* _globalPalette = nullptr;
QmlUnitsConversion _unitsConversion;
#if defined(QGC_ENABLE_PAIRING)
PairingManager* _pairingManager = nullptr;
#endif
......
/****************************************************************************
*
* (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#ifndef QMLUNITSCONVERSION_H
#define QMLUNITSCONVERSION_H
#include <QObject>
#include <qmath.h>
#include "FactMetaData.h"
class QmlUnitsConversion : public QObject
{
Q_OBJECT
public:
QmlUnitsConversion(QObject *parent=nullptr): QObject(parent) {}
~QmlUnitsConversion() = default;
Q_PROPERTY(QString appSettingsHorizontalDistanceUnitsString READ appSettingsHorizontalDistanceUnitsString CONSTANT)
Q_PROPERTY(QString appSettingsVerticalDistanceUnitsString READ appSettingsVerticalDistanceUnitsString CONSTANT)
Q_PROPERTY(QString appSettingsAreaUnitsString READ appSettingsAreaUnitsString CONSTANT)
Q_PROPERTY(QString appSettingsWeightUnitsString READ appSettingsWeightUnitsString CONSTANT)
/// Converts from meters to the user specified distance unit
Q_INVOKABLE QVariant metersToAppSettingsHorizontalDistanceUnits(const QVariant& meters) const { return FactMetaData::metersToAppSettingsHorizontalDistanceUnits(meters); }
/// Converts from user specified distance unit to meters
Q_INVOKABLE QVariant appSettingsHorizontalDistanceUnitsToMeters(const QVariant& distance) const { return FactMetaData::appSettingsHorizontalDistanceUnitsToMeters(distance); }
QString appSettingsHorizontalDistanceUnitsString(void) const { return FactMetaData::appSettingsHorizontalDistanceUnitsString(); }
/// Converts from meters to the user specified distance unit
Q_INVOKABLE QVariant metersToAppSettingsVerticalDistanceUnits(const QVariant& meters) const { return FactMetaData::metersToAppSettingsVerticalDistanceUnits(meters); }
/// Converts from user specified distance unit to meters
Q_INVOKABLE QVariant appSettingsVerticalDistanceUnitsToMeters(const QVariant& distance) const { return FactMetaData::appSettingsVerticalDistanceUnitsToMeters(distance); }
QString appSettingsVerticalDistanceUnitsString(void) const { return FactMetaData::appSettingsVerticalDistanceUnitsString(); }
/// 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); }
/// Converts from user specified area unit to square meters
Q_INVOKABLE QVariant appSettingsAreaUnitsToSquareMeters(const QVariant& area) const { return FactMetaData::appSettingsAreaUnitsToSquareMeters(area); }
QString appSettingsAreaUnitsString(void) const { return FactMetaData::appSettingsAreaUnitsString(); }
Q_INVOKABLE double degreesToRadians(double degrees) { return qDegreesToRadians(degrees); }
Q_INVOKABLE double radiansToDegrees(double radians) { return qRadiansToDegrees(radians); }
};
#endif // QMLUNITSCONVERSION_H
......@@ -17,63 +17,65 @@ DECLARE_SETTINGGROUP(Units, "Units")
qmlRegisterUncreatableType<UnitsSettings>("QGroundControl.SettingsManager", 1, 0, "UnitsSettings", "Reference only");
}
DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, distanceUnits)
DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, horizontalDistanceUnits)
{
if (!_distanceUnitsFact) {
if (!_horizontalDistanceUnitsFact) {
// 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));
enumValues << QVariant::fromValue(static_cast<uint32_t>(HorizontalDistanceUnitsFeet))
<< QVariant::fromValue(static_cast<uint32_t>(HorizontalDistanceUnitsMeters));
FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
metaData->setName(distanceUnitsName);
metaData->setName(horizontalDistanceUnitsName);
metaData->setShortDescription("Distance units");
metaData->setEnumInfo(enumStrings, enumValues);
DistanceUnits defaultDistanceUnit = DistanceUnitsMeters;
HorizontalDistanceUnits defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
switch(QLocale::system().measurementSystem()) {
case QLocale::MetricSystem: {
defaultDistanceUnit = DistanceUnitsMeters;
defaultHorizontalDistanceUnit = HorizontalDistanceUnitsMeters;
} break;
case QLocale::ImperialUSSystem:
case QLocale::ImperialUKSystem:
defaultDistanceUnit = DistanceUnitsFeet;
defaultHorizontalDistanceUnit = HorizontalDistanceUnitsFeet;
break;
}
metaData->setRawDefaultValue(defaultDistanceUnit);
metaData->setRawDefaultValue(defaultHorizontalDistanceUnit);
metaData->setQGCRebootRequired(true);
_distanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
_horizontalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
}
return _distanceUnitsFact;
return _horizontalDistanceUnitsFact;
}
DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, altitudeUnits)
DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, verticalDistanceUnits)
{
if (!_altitudeUnitsFact) {
if (!_verticalDistanceUnitsFact) {
// 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));
enumValues << QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsFeet))
<< QVariant::fromValue(static_cast<uint32_t>(VerticalDistanceUnitsMeters));
FactMetaData* metaData = new FactMetaData(FactMetaData::valueTypeUint32, this);
metaData->setName(altitudeUnitsName);
metaData->setName(verticalDistanceUnitsName);
metaData->setShortDescription("Altitude units");
metaData->setEnumInfo(enumStrings, enumValues);
AltitudeUnits defaultAltitudeUnit = AltitudeUnitsMeters;
VerticalDistanceUnits defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
switch(QLocale::system().measurementSystem()) {
case QLocale::MetricSystem: {
defaultAltitudeUnit = AltitudeUnitsMeters;
defaultVerticalAltitudeUnit = VerticalDistanceUnitsMeters;
} break;
case QLocale::ImperialUSSystem:
case QLocale::ImperialUKSystem:
defaultAltitudeUnit = AltitudeUnitsFeet;
defaultVerticalAltitudeUnit = VerticalDistanceUnitsFeet;
break;
}
metaData->setRawDefaultValue(defaultAltitudeUnit);
metaData->setRawDefaultValue(defaultVerticalAltitudeUnit);
metaData->setQGCRebootRequired(true);
_altitudeUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
_verticalDistanceUnitsFact = new SettingsFact(_settingsGroup, metaData, this);
}
return _altitudeUnitsFact;
return _verticalDistanceUnitsFact;
}
DECLARE_SETTINGSFACT_NO_FUNC(UnitsSettings, areaUnits)
......
......@@ -19,14 +19,14 @@ class UnitsSettings : public SettingsGroup
public:
UnitsSettings(QObject* parent = nullptr);
enum DistanceUnits {
DistanceUnitsFeet = 0,
DistanceUnitsMeters
enum HorizontalDistanceUnits {
HorizontalDistanceUnitsFeet = 0,
HorizontalDistanceUnitsMeters
};
enum AltitudeUnits {
AltitudeUnitsFeet = 0,
AltitudeUnitsMeters
enum VerticalDistanceUnits {
VerticalDistanceUnitsFeet = 0,
VerticalDistanceUnitsMeters
};
enum AreaUnits {
......@@ -58,17 +58,17 @@ public:
WeightUnitsLbs
};
Q_ENUM(DistanceUnits)
Q_ENUM(HorizontalDistanceUnits)
Q_ENUM(VerticalDistanceUnits)
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(horizontalDistanceUnits)
DEFINE_SETTINGFACT(verticalDistanceUnits)
DEFINE_SETTINGFACT(areaUnits)
DEFINE_SETTINGFACT(speedUnits)
DEFINE_SETTINGFACT(temperatureUnits)
......
......@@ -3150,7 +3150,7 @@ void Vehicle::guidedModeGotoLocation(const QGeoCoordinate& gotoCoord)
}
double maxDistance = _settingsManager->flyViewSettings()->maxGoToLocationDistance()->rawValue().toDouble();
if (coordinate().distanceTo(gotoCoord) > maxDistance) {
qgcApp()->showAppMessage(QString("New location is too far. Must be less than %1 %2.").arg(qRound(FactMetaData::metersToAppSettingsDistanceUnits(maxDistance).toDouble())).arg(FactMetaData::appSettingsDistanceUnitsString()));
qgcApp()->showAppMessage(QString("New location is too far. Must be less than %1 %2.").arg(qRound(FactMetaData::metersToAppSettingsHorizontalDistanceUnits(maxDistance).toDouble())).arg(FactMetaData::appSettingsHorizontalDistanceUnitsString()));
return;
}
_firmwarePlugin->guidedModeGotoLocation(this, gotoCoord);
......
......@@ -71,7 +71,7 @@ Item {
visible: QGroundControl.gpsRtk.currentAccuracy.value > 0
}
QGCLabel {
text: QGroundControl.gpsRtk.currentAccuracy.valueString + " " + QGroundControl.appSettingsDistanceUnitsString
text: QGroundControl.gpsRtk.currentAccuracy.valueString + " " + QGroundControl.unitsConversion.appSettingsHorizontalDistanceUnitsString
visible: QGroundControl.gpsRtk.currentAccuracy.value > 0
}
QGCLabel { text: qsTr("Satellites:") }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment