diff --git a/src/FactSystem/FactControls/AltitudeFactTextField.qml b/src/FactSystem/FactControls/AltitudeFactTextField.qml index 1a3d5f3..32fddaa 100644 --- a/src/FactSystem/FactControls/AltitudeFactTextField.qml +++ b/src/FactSystem/FactControls/AltitudeFactTextField.qml @@ -1,6 +1,19 @@ -import QtQuick 2.3 +/**************************************************************************** + * + * (c) 2009-2016 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ +import QtQuick 2.3 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.2 + import QGroundControl 1.0 import QGroundControl.FactSystem 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.ScreenTools 1.0 FactTextField { unitsLabel: fact ? fact.units : "" @@ -16,7 +29,8 @@ FactTextField { readonly property string _altModeAboveTerrainExtraUnits: qsTr("(Abv Terr)") readonly property string _altModeTerrainFrameExtraUnits: qsTr("(TerrF)") - property string _altitudeModeExtraUnits: _altModeNoneExtraUnits + property string _altitudeModeExtraUnits: _altModeNoneExtraUnits + property Fact _aboveTerrainWarning: QGroundControl.settingsManager.planViewSettings.aboveTerrainWarning onAltitudeModeChanged: updateAltitudeModeExtraUnits() @@ -29,6 +43,9 @@ FactTextField { _altitudeModeExtraUnits = _altModeAbsoluteExtraUnits } else if (altitudeMode === QGroundControl.AltitudeModeAboveTerrain) { _altitudeModeExtraUnits = _altModeAboveTerrainExtraUnits + if (!_aboveTerrainWarning.rawValue) { + mainWindow.showComponentDialog(aboveTerrainWarning, qsTr("Warning"), mainWindow.showDialogDefaultWidth, StandardButton.Ok) + } } else if (missionItem.altitudeMode === QGroundControl.AltitudeModeTerrainFrame) { _altitudeModeExtraUnits = _altModeTerrainFrameExtraUnits } else { @@ -36,4 +53,26 @@ FactTextField { _altitudeModeExtraUnits = "" } } + + Component { + id: aboveTerrainWarning + QGCViewDialog { + ColumnLayout { + anchors.left: parent.left + anchors.right: parent.right + spacing: ScreenTools.defaultFontPixelHeight + + QGCLabel { + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: qsTr("'Above Terrain' will set an absolute altitude for the item based on the terrain height at the location and the requested altitude above terrain. It does not send terrain heights to the vehicle.") + } + + FactCheckBox { + text: qsTr("Don't show again") + fact: _aboveTerrainWarning + } + } + } + } } diff --git a/src/Settings/PlanView.SettingsGroup.json b/src/Settings/PlanView.SettingsGroup.json index c197660..c87293b 100644 --- a/src/Settings/PlanView.SettingsGroup.json +++ b/src/Settings/PlanView.SettingsGroup.json @@ -4,5 +4,11 @@ "shortDescription": "Display the presets tab at start", "type": "bool", "defaultValue": false +}, +{ + "name": "aboveTerrainWarning", + "shortDescription": "Don't warn user about 'Above Terrain' usage", + "type": "bool", + "defaultValue": false } ] diff --git a/src/Settings/PlanViewSettings.cc b/src/Settings/PlanViewSettings.cc index 4cad6d2..9c3e88d 100644 --- a/src/Settings/PlanViewSettings.cc +++ b/src/Settings/PlanViewSettings.cc @@ -18,3 +18,4 @@ DECLARE_SETTINGGROUP(PlanView, "PlanView") } DECLARE_SETTINGSFACT(PlanViewSettings, displayPresetsTabFirst) +DECLARE_SETTINGSFACT(PlanViewSettings, aboveTerrainWarning) diff --git a/src/Settings/PlanViewSettings.h b/src/Settings/PlanViewSettings.h index ebea9f2..1c8e670 100644 --- a/src/Settings/PlanViewSettings.h +++ b/src/Settings/PlanViewSettings.h @@ -21,4 +21,5 @@ public: // Most individual settings related to PlanView are still in AppSettings due to historical reasons. DEFINE_SETTINGFACT(displayPresetsTabFirst) + DEFINE_SETTINGFACT(aboveTerrainWarning) };