diff --git a/src/FactSystem/FactControls/AltitudeFactTextField.qml b/src/FactSystem/FactControls/AltitudeFactTextField.qml index 1a3d5f360e9b807fc96eed11758f8df3ed4847cb..32fddaa3a0b32f320d05e0ba7a20a3c1d916dc68 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 c1976604bcd0714dbace10d9f49fba316da345ab..c87293be0b38242155b0e1be06a2c5cf1ed2c52c 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 4cad6d28c1b971d3e63a03bf30916e8e9d36a52c..9c3e88da9117920549d869cf148508535e2d7273 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 ebea9f27e46df8d7ca99a384a1f61bf97541db79..1c8e670edfae1644c6694e3dfaaa4a8926621ee6 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) };