diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml index c89bd61b310652d1f4c80e44e06ba1675adee8ff..8356ca392bc2f1a4dab5701511786516bb150059 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml @@ -8,13 +8,175 @@ ****************************************************************************/ -import QtQuick 2.3 +import QtQuick 2.3 +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: qsTr("Not supported") - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter -} +SetupPage { + id: safetyPage + pageComponent: safetyPageComponent + + Component { + id: safetyPageComponent + + Flow { + id: flowLayout + width: availableWidth + spacing: _margins + + FactPanelController { id: controller; factPanel: safetyPage.viewPanel } + + QGCPalette { id: ggcPal; colorGroupEnabled: true } + + property Fact _failsafeGCSEnable: controller.getParameterFact(-1, "FS_GCS_ENABLE") + property Fact _failsafeThrEnable: controller.getParameterFact(-1, "FS_THR_ENABLE") + property Fact _failsafeThrValue: controller.getParameterFact(-1, "FS_THR_VALUE") + property Fact _failsafeAction: controller.getParameterFact(-1, "FS_ACTION") + property Fact _failsafeCrashCheck: controller.getParameterFact(-1, "FS_CRASH_CHECK") + + property Fact _armingCheck: controller.getParameterFact(-1, "ARMING_CHECK") + + property real _margins: ScreenTools.defaultFontPixelHeight + property bool _showIcon: !ScreenTools.isTinyScreen + + Column { + spacing: _margins / 2 + + QGCLabel { + id: failsafeLabel + text: qsTr("Failsafe Triggers") + font.family: ScreenTools.demiboldFontFamily + } + + Rectangle { + id: failsafeSettings + width: throttleEnableCombo.x + throttleEnableCombo.width + _margins + height: crashCheckCombo.y + crashCheckCombo.height + _margins + color: ggcPal.windowShade + + QGCLabel { + id: gcsEnableLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: gcsEnableCombo.baseline + text: qsTr("Ground Station failsafe:") + } + + FactComboBox { + id: gcsEnableCombo + anchors.topMargin: _margins + anchors.leftMargin: _margins + anchors.left: gcsEnableLabel.right + anchors.top: parent.top + width: throttlePWMField.width + fact: _failsafeGCSEnable + indexModel: false + } + + QGCLabel { + id: throttleEnableLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: throttleEnableCombo.baseline + text: qsTr("Throttle failsafe:") + } + + FactComboBox { + id: throttleEnableCombo + anchors.topMargin: _margins + anchors.left: gcsEnableCombo.left + anchors.top: gcsEnableCombo.bottom + width: throttlePWMField.width + fact: _failsafeThrEnable + indexModel: false + } + + QGCLabel { + id: throttlePWMLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: throttlePWMField.baseline + text: qsTr("PWM threshold:") + } + + FactTextField { + id: throttlePWMField + anchors.topMargin: _margins / 2 + anchors.left: gcsEnableCombo.left + anchors.top: throttleEnableCombo.bottom + fact: _failsafeThrValue + showUnits: true + } + + QGCLabel { + id: crashCheckLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: crashCheckCombo.baseline + text: qsTr("Failsafe Crash Check:") + } + + QGCComboBox { + id: crashCheckCombo + anchors.topMargin: _margins + anchors.left: gcsEnableCombo.left + anchors.top: throttlePWMField.bottom + width: throttlePWMField.width + model: [qsTr("Disabled"), qsTr("Hold"), qsTr("Hold and Disarm")] + currentIndex: _failsafeCrashCheck.value + + onActivated: _failsafeCrashCheck.value = index + } + } // Rectangle - Failsafe Settings + } // Column - Failsafe Settings + + Column { + spacing: _margins / 2 + + QGCLabel { + text: qsTr("Arming Checks") + font.family: ScreenTools.demiboldFontFamily + } + + Rectangle { + width: flowLayout.width + height: armingCheckInnerColumn.height + (_margins * 2) + color: ggcPal.windowShade + + Column { + id: armingCheckInnerColumn + anchors.margins: _margins + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + spacing: _margins + + FactBitmask { + id: armingCheckBitmask + anchors.left: parent.left + anchors.right: parent.right + firstEntryIsAll: true + fact: _armingCheck + } + + QGCLabel { + id: armingCheckWarning + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + color: qgcPal.warningText + text: qsTr("Warning: Turning off arming checks can lead to loss of Vehicle control.") + visible: _armingCheck.value != 1 + } + } + } // Rectangle - Arming checks + } // Column - Arming Checks + } // Flow + } // Component - safetyPageComponent +} // SetupView diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml index c89bd61b310652d1f4c80e44e06ba1675adee8ff..a71f5f9f52edcef1e8527985bfe1ad33811f43b8 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml @@ -7,14 +7,103 @@ * ****************************************************************************/ - import QtQuick 2.3 +import QtQuick.Controls 1.2 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 import QGroundControl.Controls 1.0 +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 _failsafeThrEnable: controller.getParameterFact(-1, "FS_THR_ENABLE") + property Fact _failsafeThrValue: controller.getParameterFact(-1, "FS_THR_VALUE") + property Fact _failsafeAction: controller.getParameterFact(-1, "FS_ACTION") + property Fact _failsafeCrashCheck: controller.getParameterFact(-1, "FS_CRASH_CHECK") + + property Fact _armingCheck: controller.getParameterFact(-1, "ARMING_CHECK") + + property string _failsafeActionText + property string _failsafeCrashCheckText + + Component.onCompleted: { + setFailsafeActionText() + setFailsafeCrashCheckText() + } + + Connections { + target: _failsafeAction + + onValueChanged: setFailsafeActionText() + } + + Connections { + target: _failsafeCrashCheck + + onValueChanged: setFailsafeCrashCheckText() + } + + function setFailsafeActionText() { + switch (_failsafeAction.value) { + case 0: + _failsafeActionText = qsTr("Disabled") + break + case 1: + _failsafeActionText = qsTr("Always RTL") + break + case 2: + _failsafeActionText = qsTr("Always Hold") + break + default: + _failsafeActionText = qsTr("Unknown") + } + } + + function setFailsafeCrashCheckText() { + switch (_failsafeCrashCheck.value) { + case 0: + _failsafeCrashCheckText = qsTr("Disabled") + break + case 1: + _failsafeCrashCheckText = qsTr("Hold") + break + case 2: + _failsafeCrashCheckText = qsTr("Hold and Disarm") + break + default: + _failsafeCrashCheckText = qsTr("Unknown") + } + } + + Column { + anchors.fill: parent + + VehicleSummaryRow { + labelText: qsTr("Arming Checks:") + valueText: _armingCheck.value & 1 ? qsTr("Enabled") : qsTr("Some disabled") + } + + VehicleSummaryRow { + labelText: qsTr("Throttle failsafe:") + valueText: _failsafeThrEnable.value != 0 ? _failsafeThrValue.valueString : qsTr("Disabled") + } + + VehicleSummaryRow { + labelText: qsTr("Failsafe Action:") + valueText: _failsafeActionText + } + + VehicleSummaryRow { + labelText: qsTr("Failsafe Crash Check:") + valueText: _failsafeCrashCheckText + } -QGCLabel { - anchors.fill: parent - text: qsTr("Not supported") - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + } }