diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml index ace3b3a1d446a0f7f015bec81cb86672bca4e9aa..f06676032023b98df9c6c802a9b78b2e63aa67c5 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml @@ -21,13 +21,190 @@ ======================================================================*/ -import QtQuick 2.5 +import QtQuick 2.5 +import QtQuick.Controls 1.2 +import QtGraphicalEffects 1.0 -import QGroundControl.Controls 1.0 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.ScreenTools 1.0 -QGCLabel { - anchors.fill: parent - text: "Not supported" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter -} +QGCView { + id: _safetyView + viewPanel: panel + anchors.fill: parent + + FactPanelController { id: controller; factPanel: panel } + + QGCPalette { id: palette; colorGroupEnabled: enabled } + + property Fact _failsafeBattMah: controller.getParameterFact(-1, "FS_BATT_MAH") + property Fact _failsafeBattVoltage: controller.getParameterFact(-1, "FS_BATT_VOLTAGE") + property Fact _failsafeThrEnable: controller.getParameterFact(-1, "THR_FAILSAFE") + property Fact _failsafeThrValue: controller.getParameterFact(-1, "THR_FS_VALUE") + property Fact _failsafeGCSEnable: controller.getParameterFact(-1, "FS_GCS_ENABL") + + property Fact _rtlAltFact: controller.getParameterFact(-1, "ALT_HOLD_RTL") + + property real _margins: ScreenTools.defaultFontPixelHeight + + ExclusiveGroup { id: returnAltRadioGroup } + + QGCViewPanel { + id: panel + anchors.fill: parent + + Flickable { + clip: true + anchors.fill: parent + boundsBehavior: Flickable.StopAtBounds + contentHeight: rtlSettings.y + rtlSettings.height + flickableDirection: Flickable.VerticalFlick + + QGCLabel { + id: failsafeTriggersLabel + text: "Failsafe Triggers" + font.weight: Font.DemiBold + } + + Rectangle { + id: failsafeTriggerSettings + anchors.topMargin: _margins / 2 + anchors.rightMargin: _margins + anchors.left: parent.left + anchors.top: failsafeTriggersLabel.bottom + width: throttlePWMField.x + throttlePWMField.width + _margins + height: gcsCheckbox.y + gcsCheckbox.height + _margins + color: palette.windowShade + + QGCCheckBox { + id: throttleEnableCheckBox + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: throttlePWMField.baseline + text: "Throttle PWM threshold:" + checked: _failsafeThrEnable.value == 1 + + onClicked: _failsafeThrEnable.value = (checked ? 1 : 0) + } + + FactTextField { + id: throttlePWMField + anchors.margins: _margins + anchors.left: throttleEnableCheckBox.right + anchors.top: parent.top + fact: _failsafeThrValue + showUnits: true + enabled: throttleEnableCheckBox.checked + } + + QGCCheckBox { + id: voltageCheckBox + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: voltageField.baseline + text: "Voltage threshold:" + checked: _failsafeBattVoltage.value != 0 + + onClicked: _failsafeBattVoltage.value = checked ? 10.5 : 0 + } + + FactTextField { + id: voltageField + anchors.topMargin: _margins + anchors.left: throttlePWMField.left + anchors.top: throttlePWMField.bottom + fact: _failsafeBattVoltage + showUnits: true + enabled: voltageCheckBox.checked + } + + QGCCheckBox { + id: mahCheckBox + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: mahField.baseline + text: "MAH threshold:" + checked: _failsafeBattMah.value != 0 + + onClicked: _failsafeBattMah.value = checked ? 600 : 0 + } + + FactTextField { + id: mahField + anchors.topMargin: _margins / 2 + anchors.left: throttlePWMField.left + anchors.top: voltageField.bottom + fact: _failsafeBattMah + showUnits: true + enabled: mahCheckBox.checked + } + + QGCCheckBox { + id: gcsCheckbox + anchors.margins: _margins + anchors.left: parent.left + anchors.top: mahField.bottom + text: "GCS failsafe" + checked: _failsafeGCSEnable.value != 0 + + onClicked: _failsafeGCSEnable.value = checked ? 1 : 0 + } + } // Rectangle - Failsafe trigger settings + + QGCLabel { + id: rtlLabel + anchors.leftMargin: _margins + anchors.left: failsafeTriggerSettings.right + text: "Return to Launch" + font.weight: Font.DemiBold + } + + Rectangle { + id: rtlSettings + anchors.topMargin: _margins / 2 + anchors.left: rtlLabel.left + anchors.top: rtlLabel.bottom + anchors.bottom: failsafeTriggerSettings.bottom + width: rltAltField.x + rltAltField.width + _margins + color: palette.windowShade + + QGCRadioButton { + id: returnAtCurrentRadio + anchors.margins: _margins + anchors.left: parent.left + anchors.top: parent.top + text: "Return at current altitude" + checked: _rtlAltFact.value < 0 + exclusiveGroup: returnAltRadioGroup + + onClicked: _rtlAltFact.value = -1 + } + + QGCRadioButton { + id: returnAltRadio + anchors.topMargin: _margins / 2 + anchors.left: returnAtCurrentRadio.left + anchors.top: returnAtCurrentRadio.bottom + text: "Return at specified altitude:" + exclusiveGroup: returnAltRadioGroup + checked: _rtlAltFact.value >= 0 + + onClicked: _rtlAltFact.value = 10000 + } + + FactTextField { + id: rltAltField + anchors.leftMargin: _margins + anchors.left: returnAltRadio.right + anchors.baseline: returnAltRadio.baseline + fact: _rtlAltFact + showUnits: true + enabled: returnAltRadio.checked + } + } // Rectangle - RTL Settings + } // Flickable + } // QGCViewPanel +} // QGCView diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml index ace3b3a1d446a0f7f015bec81cb86672bca4e9aa..260bc9817021f5f29c4ed5e0c25b7cae9642cd8a 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml @@ -1,33 +1,49 @@ -/*===================================================================== - - QGroundControl Open Source Ground Control Station - - (c) 2009 - 2015 QGROUNDCONTROL PROJECT - - This file is part of the QGROUNDCONTROL project - - QGROUNDCONTROL is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - QGROUNDCONTROL is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with QGROUNDCONTROL. If not, see . - - ======================================================================*/ - -import QtQuick 2.5 +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 import QGroundControl.Controls 1.0 - -QGCLabel { - anchors.fill: parent - text: "Not supported" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter +import QGroundControl.Palette 1.0 + +FactPanel { + id: panel + anchors.fill: parent + color: qgcPal.windowShadeDark + + QGCPalette { id: qgcPal; colorGroupEnabled: enabled } + FactPanelController { id: controller; factPanel: panel } + + property Fact _failsafeBattMah: controller.getParameterFact(-1, "FS_BATT_MAH") + property Fact _failsafeBattVoltage: controller.getParameterFact(-1, "FS_BATT_VOLTAGE") + property Fact _failsafeThrEnable: controller.getParameterFact(-1, "THR_FAILSAFE") + property Fact _failsafeThrValue: controller.getParameterFact(-1, "THR_FS_VALUE") + property Fact _failsafeGCSEnable: controller.getParameterFact(-1, "FS_GCS_ENABL") + + property Fact _rtlAltFact: controller.getParameterFact(-1, "ALT_HOLD_RTL") + + Column { + anchors.fill: parent + anchors.margins: 8 + + VehicleSummaryRow { + labelText: "Throttle failsafe:" + valueText: _failsafeThrEnable.value != 0 ? _failsafeThrValue.valueString : "Disabled" + } + + VehicleSummaryRow { + labelText: "Voltage failsafe:" + valueText: _failsafeBattVoltage.value == 0 ? "Disabled" : _failsafeBattVoltage.valueString + } + + VehicleSummaryRow { + labelText: "mAh failsafe:" + valueText: _failsafeBattMah.value == 0 ? "Disabled" : _failsafeBattMah.valueString + } + + VehicleSummaryRow { + labelText: "RTL min alt:" + valueText: _rtlAltFact.value < 0 ? "current" : _rtlAltFact.valueString + } + } }