From ee3269f78b3390efe71a7e03abda49cc45fece15 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 29 Apr 2018 16:57:25 -0700 Subject: [PATCH] Use FactValueSlider control for Altitude --- src/MissionManager/SimpleMissionItem.cc | 3 + src/PlanView/SimpleItemEditor.qml | 84 ++++++++++++++++--------- 2 files changed, 58 insertions(+), 29 deletions(-) diff --git a/src/MissionManager/SimpleMissionItem.cc b/src/MissionManager/SimpleMissionItem.cc index 40b68604d..76ebceb84 100644 --- a/src/MissionManager/SimpleMissionItem.cc +++ b/src/MissionManager/SimpleMissionItem.cc @@ -220,6 +220,7 @@ void SimpleMissionItem::_setupMetaData(void) if (!_altitudeMetaData) { _altitudeMetaData = new FactMetaData(FactMetaData::valueTypeDouble); _altitudeMetaData->setRawUnits("m"); + _altitudeMetaData->setRawIncrement(1); _altitudeMetaData->setDecimalPlaces(2); enumStrings.clear(); @@ -259,6 +260,7 @@ void SimpleMissionItem::_setupMetaData(void) _missionItem._commandFact.setMetaData(_commandMetaData); _missionItem._frameFact.setMetaData(_frameMetaData); _altitudeFact.setMetaData(_altitudeMetaData); + _amslAltAboveTerrainFact.setMetaData(_altitudeMetaData); } SimpleMissionItem::~SimpleMissionItem() @@ -659,6 +661,7 @@ void SimpleMissionItem::_altitudeChanged(void) } if (_altitudeMode == AltitudeAboveTerrain) { + _amslAltAboveTerrainFact.setRawValue(qQNaN()); _terrainAltChanged(); } else { _missionItem._param7Fact.setRawValue(_altitudeFact.rawValue()); diff --git a/src/PlanView/SimpleItemEditor.qml b/src/PlanView/SimpleItemEditor.qml index e63cc8453..d9bbe4f2d 100644 --- a/src/PlanView/SimpleItemEditor.qml +++ b/src/PlanView/SimpleItemEditor.qml @@ -19,6 +19,12 @@ Rectangle { property bool _specifiesAltitude: missionItem.specifiesAltitude property bool _altModeIsTerrain: missionItem.altitudeMode === 2 + property real _margin: ScreenTools.defaultFontPixelHeight / 2 + + ExclusiveGroup { + id: altRadios + onCurrentChanged: missionItem.altitudeMode = current.value + } Column { id: valuesColumn @@ -67,31 +73,63 @@ Rectangle { } } + Rectangle { + anchors.left: parent.left + anchors.right: parent.right + height: altColumn.y + altColumn.height + _margin + color: qgcPal.windowShade + + Column { + id: altColumn + anchors.margins: _margin + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + spacing: _margin + + QGCLabel { + font.pointSize: ScreenTools.smallFontPointSize + text: qsTr("Altitude") + } + + RowLayout { + QGCRadioButton { text: qsTr("Rel"); exclusiveGroup: altRadios; checked: missionItem.altitudeMode === value; readonly property int value: 0 } + QGCRadioButton { text: qsTr("Abs"); exclusiveGroup: altRadios; checked: missionItem.altitudeMode === value; readonly property int value: 1 } + QGCRadioButton { text: qsTr("AGL"); exclusiveGroup: altRadios; checked: missionItem.altitudeMode === value; readonly property int value: 2 } + } + + FactValueSlider { + fact: missionItem.altitude + digitCount: 3 + incrementSlots: 1 + visible: _specifiesAltitude + } + + RowLayout { + spacing: _margin + + QGCLabel { + text: qsTr("Calculated Abs Alt") + font.pointSize: ScreenTools.smallFontPointSize + visible: _altModeIsTerrain + } + QGCLabel { + text: missionItem.amslAltAboveTerrain.valueString + " " + missionItem.amslAltAboveTerrain.units + visible: _altModeIsTerrain + } + } + } + } + GridLayout { anchors.left: parent.left anchors.right: parent.right flow: GridLayout.TopToBottom rows: missionItem.textFieldFacts.count + missionItem.nanFacts.count + - (missionItem.speedSection.available ? 1 : 0) + - (_specifiesAltitude ? 1 : 0) + - (_altModeIsTerrain ? 1 : 0) + (missionItem.speedSection.available ? 1 : 0) columns: 2 - QGCComboBox { - id: altCombo - model: [ qsTr("Alt (Rel)"), qsTr("AMSL"), qsTr("Above Terrain") ] - currentIndex: missionItem.altitudeMode - Layout.fillWidth: true - onActivated: missionItem.altitudeMode = index - visible: _specifiesAltitude - } - - QGCLabel { - text: qsTr("Actual AMSL Alt") - visible: _altModeIsTerrain - } - Repeater { model: missionItem.textFieldFacts @@ -117,18 +155,6 @@ Rectangle { } - FactTextField { - showUnits: true - fact: missionItem.altitude - Layout.fillWidth: true - visible: _specifiesAltitude - } - - FactLabel { - fact: missionItem.amslAltAboveTerrain - visible: _altModeIsTerrain - } - Repeater { model: missionItem.textFieldFacts -- 2.22.0