From d0652c352800f9cdaa3b1b411df9db361e6daa6e Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Tue, 10 Dec 2019 15:11:50 +0300 Subject: [PATCH] Warn about Above Terrain usage --- .../FactControls/AltitudeFactTextField.qml | 43 +++++++++++++++++++++- src/Settings/PlanView.SettingsGroup.json | 6 +++ src/Settings/PlanViewSettings.cc | 1 + src/Settings/PlanViewSettings.h | 1 + 4 files changed, 49 insertions(+), 2 deletions(-) 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) };