From 811ab74ec0a4b42eeae0af6d8c8a4ba0c7eb4602 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 7 Jun 2016 15:47:05 -0700 Subject: [PATCH] Small screen fixes --- .../APM/APMSafetyComponentCopter.qml | 847 +++++++++--------- .../APM/APMSafetyComponentPlane.qml | 291 +++--- src/FactSystem/FactControls/FactBitmask.qml | 2 +- 3 files changed, 579 insertions(+), 561 deletions(-) diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml index 853da165f..c5df0912c 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml @@ -48,7 +48,8 @@ QGCView { property Fact _armingCheck: controller.getParameterFact(-1, "ARMING_CHECK") - property real _margins: ScreenTools.defaultFontPixelHeight + property real _margins: ScreenTools.defaultFontPixelHeight + property bool _showIcon: !ScreenTools.isTinyScreen ExclusiveGroup { id: fenceActionRadioGroup } ExclusiveGroup { id: landLoiterRadioGroup } @@ -61,428 +62,444 @@ QGCView { QGCFlickable { clip: true anchors.fill: parent - contentHeight: armingCheckSettings.y + armingCheckSettings.height - contentWidth: armingCheckSettings.x + armingCheckSettings.width - - QGCLabel { - id: failsafeLabel - text: qsTr("Failsafe Triggers") - font.family: ScreenTools.demiboldFontFamily - } - - Rectangle { - id: failsafeSettings - anchors.topMargin: _margins / 2 - anchors.rightMargin: _margins - anchors.left: parent.left - anchors.top: failsafeLabel.bottom - width: throttleEnableCombo.x + throttleEnableCombo.width + _margins - height: mahField.y + mahField.height + _margins - color: palette.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: voltageField.width - fact: _failsafeGCSEnable - indexModel: false - } - - QGCLabel { - id: throttleEnableLabel - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: throttleEnableCombo.baseline - text: qsTr("Throttle failsafe:") - } - - QGCComboBox { - id: throttleEnableCombo - anchors.topMargin: _margins - anchors.left: gcsEnableCombo.left - anchors.top: gcsEnableCombo.bottom - width: voltageField.width - model: [qsTr("Disabled"), qsTr("Always RTL"), - qsTr("Continue with Mission in Auto Mode"), qsTr("Always Land")] - currentIndex: _failsafeThrEnable.value - - onActivated: _failsafeThrEnable.value = index - } - - 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: batteryEnableLabel - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: batteryEnableCombo.baseline - text: qsTr("Battery failsafe:") - } - - QGCComboBox { - id: batteryEnableCombo - anchors.topMargin: _margins - anchors.left: gcsEnableCombo.left - anchors.top: throttlePWMField.bottom - width: voltageField.width - model: [qsTr("Disabled"), qsTr("Land"), qsTr("Return to Launch")] - currentIndex: _failsafeBattEnable.value - - onActivated: _failsafeBattEnable.value = index - } - - QGCCheckBox { - id: voltageLabel - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: voltageField.baseline - text: qsTr("Voltage threshold:") - checked: _failsafeBattVoltage.value != 0 - - onClicked: _failsafeBattVoltage.value = checked ? 10.5 : 0 - } - - FactTextField { - id: voltageField - anchors.topMargin: _margins / 2 - anchors.left: gcsEnableCombo.left - anchors.top: batteryEnableCombo.bottom - fact: _failsafeBattVoltage - showUnits: true - } - - QGCCheckBox { - id: mahLabel - anchors.margins: _margins - anchors.left: parent.left - anchors.baseline: mahField.baseline - text: qsTr("MAH threshold:") - checked: _failsafeBattMah.value != 0 - - onClicked: _failsafeBattMah.value = checked ? 600 : 0 - } - - FactTextField { - id: mahField - anchors.topMargin: _margins / 2 - anchors.left: gcsEnableCombo.left - anchors.top: voltageField.bottom - fact: _failsafeBattMah - showUnits: true - } - } // Rectangle - Failsafe Settings - - QGCLabel { - id: geoFenceLabel - anchors.leftMargin: _margins - anchors.left: failsafeSettings.right - anchors.top: parent.top - text: qsTr("GeoFence") - font.family: ScreenTools.demiboldFontFamily - } - - Rectangle { - id: geoFenceSettings - anchors.topMargin: _margins / 2 - anchors.left: geoFenceLabel.left - anchors.top: geoFenceLabel.bottom - anchors.bottom: failsafeSettings.bottom - width: fenceAltMaxField.x + fenceAltMaxField.width + _margins - color: palette.windowShade - - QGCCheckBox { - id: circleGeo - anchors.margins: _margins - anchors.left: parent.left - anchors.top: parent.top - text: qsTr("Circle GeoFence enabled") - checked: _fenceEnable.value != 0 && _fenceType.value & 2 - - onClicked: { - if (checked) { - if (_fenceEnable.value == 1) { - _fenceType.value |= 2 - } else { - _fenceEnable.value = 1 - _fenceType.value = 2 - } - } else if (altitudeGeo.checked) { - _fenceType.value &= ~2 - } else { - _fenceEnable.value = 0 - _fenceType.value = 0 + contentHeight: flowLayout.height + contentWidth: flowLayout.width + + Flow { + id: flowLayout + width: panel.width // parent.width doesn't work for some reason + spacing: _margins + + 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: mahField.y + mahField.height + _margins + color: palette.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: voltageField.width + fact: _failsafeGCSEnable + indexModel: false } + + QGCLabel { + id: throttleEnableLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: throttleEnableCombo.baseline + text: qsTr("Throttle failsafe:") + } + + QGCComboBox { + id: throttleEnableCombo + anchors.topMargin: _margins + anchors.left: gcsEnableCombo.left + anchors.top: gcsEnableCombo.bottom + width: voltageField.width + model: [qsTr("Disabled"), qsTr("Always RTL"), + qsTr("Continue with Mission in Auto Mode"), qsTr("Always Land")] + currentIndex: _failsafeThrEnable.value + + onActivated: _failsafeThrEnable.value = index + } + + 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: batteryEnableLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: batteryEnableCombo.baseline + text: qsTr("Battery failsafe:") + } + + QGCComboBox { + id: batteryEnableCombo + anchors.topMargin: _margins + anchors.left: gcsEnableCombo.left + anchors.top: throttlePWMField.bottom + width: voltageField.width + model: [qsTr("Disabled"), qsTr("Land"), qsTr("Return to Launch")] + currentIndex: _failsafeBattEnable.value + + onActivated: _failsafeBattEnable.value = index + } + + QGCCheckBox { + id: voltageLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: voltageField.baseline + text: qsTr("Voltage threshold:") + checked: _failsafeBattVoltage.value != 0 + + onClicked: _failsafeBattVoltage.value = checked ? 10.5 : 0 + } + + FactTextField { + id: voltageField + anchors.topMargin: _margins / 2 + anchors.left: gcsEnableCombo.left + anchors.top: batteryEnableCombo.bottom + fact: _failsafeBattVoltage + showUnits: true + } + + QGCCheckBox { + id: mahLabel + anchors.margins: _margins + anchors.left: parent.left + anchors.baseline: mahField.baseline + text: qsTr("MAH threshold:") + checked: _failsafeBattMah.value != 0 + + onClicked: _failsafeBattMah.value = checked ? 600 : 0 + } + + FactTextField { + id: mahField + anchors.topMargin: _margins / 2 + anchors.left: gcsEnableCombo.left + anchors.top: voltageField.bottom + fact: _failsafeBattMah + showUnits: true + } + } // Rectangle - Failsafe Settings + } // Column - Failsafe Settings + + Column { + spacing: _margins / 2 + + QGCLabel { + id: geoFenceLabel + text: qsTr("GeoFence") + font.family: ScreenTools.demiboldFontFamily } - } - - QGCCheckBox { - id: altitudeGeo - anchors.topMargin: _margins / 2 - anchors.left: circleGeo.left - anchors.top: circleGeo.bottom - text: qsTr("Altitude GeoFence enabled") - checked: _fenceEnable.value != 0 && _fenceType.value & 1 - - onClicked: { - if (checked) { - if (_fenceEnable.value == 1) { - _fenceType.value |= 1 - } else { - _fenceEnable.value = 1 - _fenceType.value = 1 + + Rectangle { + id: geoFenceSettings + width: fenceAltMaxField.x + fenceAltMaxField.width + _margins + height: fenceAltMaxField.y + fenceAltMaxField.height + _margins + color: palette.windowShade + + QGCCheckBox { + id: circleGeo + anchors.margins: _margins + anchors.left: parent.left + anchors.top: parent.top + text: qsTr("Circle GeoFence enabled") + checked: _fenceEnable.value != 0 && _fenceType.value & 2 + + onClicked: { + if (checked) { + if (_fenceEnable.value == 1) { + _fenceType.value |= 2 + } else { + _fenceEnable.value = 1 + _fenceType.value = 2 + } + } else if (altitudeGeo.checked) { + _fenceType.value &= ~2 + } else { + _fenceEnable.value = 0 + _fenceType.value = 0 + } + } + } + + QGCCheckBox { + id: altitudeGeo + anchors.topMargin: _margins / 2 + anchors.left: circleGeo.left + anchors.top: circleGeo.bottom + text: qsTr("Altitude GeoFence enabled") + checked: _fenceEnable.value != 0 && _fenceType.value & 1 + + onClicked: { + if (checked) { + if (_fenceEnable.value == 1) { + _fenceType.value |= 1 + } else { + _fenceEnable.value = 1 + _fenceType.value = 1 + } + } else if (circleGeo.checked) { + _fenceType.value &= ~1 + } else { + _fenceEnable.value = 0 + _fenceType.value = 0 + } } - } else if (circleGeo.checked) { - _fenceType.value &= ~1 - } else { - _fenceEnable.value = 0 - _fenceType.value = 0 } + + QGCRadioButton { + id: geoReportRadio + anchors.margins: _margins + anchors.left: parent.left + anchors.top: altitudeGeo.bottom + text: qsTr("Report only") + exclusiveGroup: fenceActionRadioGroup + checked: _fenceAction.value == 0 + + onClicked: _fenceAction.value = 0 + } + + QGCRadioButton { + id: geoRTLRadio + anchors.topMargin: _margins / 2 + anchors.left: circleGeo.left + anchors.top: geoReportRadio.bottom + text: qsTr("RTL or Land") + exclusiveGroup: fenceActionRadioGroup + checked: _fenceAction.value == 1 + + onClicked: _fenceAction.value = 1 + } + + QGCLabel { + id: fenceRadiusLabel + anchors.left: circleGeo.left + anchors.baseline: fenceRadiusField.baseline + text: qsTr("Max radius:") + } + + FactTextField { + id: fenceRadiusField + anchors.topMargin: _margins + anchors.left: fenceAltMaxField.left + anchors.top: geoRTLRadio.bottom + fact: _fenceRadius + showUnits: true + } + + QGCLabel { + id: fenceAltMaxLabel + anchors.left: circleGeo.left + anchors.baseline: fenceAltMaxField.baseline + text: qsTr("Max altitude:") + } + + FactTextField { + id: fenceAltMaxField + anchors.topMargin: _margins / 2 + anchors.leftMargin: _margin + anchors.left: fenceAltMaxLabel.right + anchors.top: fenceRadiusField.bottom + fact: _fenceAltMax + showUnits: true + } + } // Rectangle - GeoFence Settings + } // Column - GeoFence Settings + + Column { + spacing: _margins / 2 + + QGCLabel { + id: rtlLabel + text: qsTr("Return to Launch") + font.family: ScreenTools.demiboldFontFamily } - } - - QGCRadioButton { - id: geoReportRadio - anchors.margins: _margins - anchors.left: parent.left - anchors.top: altitudeGeo.bottom - text: qsTr("Report only") - exclusiveGroup: fenceActionRadioGroup - checked: _fenceAction.value == 0 - - onClicked: _fenceAction.value = 0 - } - - QGCRadioButton { - id: geoRTLRadio - anchors.topMargin: _margins / 2 - anchors.left: circleGeo.left - anchors.top: geoReportRadio.bottom - text: qsTr("RTL or Land") - exclusiveGroup: fenceActionRadioGroup - checked: _fenceAction.value == 1 - - onClicked: _fenceAction.value = 1 - } - - QGCLabel { - id: fenceRadiusLabel - anchors.left: circleGeo.left - anchors.baseline: fenceRadiusField.baseline - text: qsTr("Max radius:") - } - - FactTextField { - id: fenceRadiusField - anchors.topMargin: _margins - anchors.left: fenceAltMaxField.left - anchors.top: geoRTLRadio.bottom - fact: _fenceRadius - showUnits: true - } - - QGCLabel { - id: fenceAltMaxLabel - anchors.left: circleGeo.left - anchors.baseline: fenceAltMaxField.baseline - text: qsTr("Max altitude:") - } - - FactTextField { - id: fenceAltMaxField - anchors.topMargin: _margins / 2 - anchors.leftMargin: _margin - anchors.left: fenceAltMaxLabel.right - anchors.top: fenceRadiusField.bottom - fact: _fenceAltMax - showUnits: true - } - } // Rectangle - GeoFence Settings - - QGCLabel { - id: rtlLabel - anchors.topMargin: _margins - anchors.top: geoFenceSettings.bottom - text: qsTr("Return to Launch") - font.family: ScreenTools.demiboldFontFamily - } - - Rectangle { - id: rtlSettings - anchors.topMargin: _margins / 2 - anchors.left: parent.left - anchors.top: rtlLabel.bottom - width: rltAltFinalField.x + rltAltFinalField.width + _margins - height: rltAltFinalField.y + rltAltFinalField.height + _margins - color: palette.windowShade - - Image { - id: icon - anchors.margins: _margins - anchors.left: parent.left - anchors.top: parent.top - height: ScreenTools.defaultFontPixelWidth * 20 - width: ScreenTools.defaultFontPixelWidth * 20 - sourceSize.width: width - mipmap: true - fillMode: Image.PreserveAspectFit - visible: false - source: "/qmlimages/ReturnToHomeAltitude.svg" - } - - ColorOverlay { - anchors.fill: icon - source: icon - color: palette.text - } - - QGCRadioButton { - id: returnAtCurrentRadio - anchors.leftMargin: _margins - anchors.left: icon.right - anchors.top: icon.top - text: qsTr("Return at current altitude") - checked: _rtlAltFact.value == 0 - exclusiveGroup: returnAltRadioGroup - - onClicked: _rtlAltFact.value = 0 - } - - QGCRadioButton { - id: returnAltRadio - anchors.topMargin: _margins - anchors.left: returnAtCurrentRadio.left - anchors.top: returnAtCurrentRadio.bottom - text: qsTr("Return at specified altitude:") - exclusiveGroup: returnAltRadioGroup - checked: _rtlAltFact.value != 0 - - onClicked: _rtlAltFact.value = 1500 - } - - FactTextField { - id: rltAltField - anchors.leftMargin: _margins - anchors.left: returnAltRadio.right - anchors.baseline: returnAltRadio.baseline - fact: _rtlAltFact - showUnits: true - enabled: returnAltRadio.checked - } - - QGCCheckBox { - id: homeLoiterCheckbox - anchors.left: returnAtCurrentRadio.left - anchors.baseline: landDelayField.baseline - checked: _rtlLoitTimeFact.value > 0 - text: qsTr("Loiter above Home for:") - - onClicked: _rtlLoitTimeFact.value = (checked ? 60 : 0) - } - - FactTextField { - id: landDelayField - anchors.topMargin: _margins * 1.5 - anchors.left: rltAltField.left - anchors.top: rltAltField.bottom - fact: _rtlLoitTimeFact - showUnits: true - enabled: homeLoiterCheckbox.checked === true - } - - QGCRadioButton { - id: landRadio - anchors.left: returnAtCurrentRadio.left - anchors.baseline: landSpeedField.baseline - text: qsTr("Land with descent speed:") - checked: _rtlAltFinalFact.value == 0 - exclusiveGroup: landLoiterRadioGroup - - onClicked: _rtlAltFinalFact.value = 0 - } - - FactTextField { - id: landSpeedField - anchors.topMargin: _margins * 1.5 - anchors.top: landDelayField.bottom - anchors.left: rltAltField.left - fact: _landSpeedFact - showUnits: true - enabled: landRadio.checked - } - - QGCRadioButton { - id: finalLoiterRadio - anchors.left: returnAtCurrentRadio.left - anchors.baseline: rltAltFinalField.baseline - text: qsTr("Final loiter altitude:") - exclusiveGroup: landLoiterRadioGroup - - onClicked: _rtlAltFinalFact.value = _rtlAltFact.value - } - - FactTextField { - id: rltAltFinalField - anchors.topMargin: _margins / 2 - anchors.left: rltAltField.left - anchors.top: landSpeedField.bottom - fact: _rtlAltFinalFact - enabled: finalLoiterRadio.checked - showUnits: true - } - } // Rectangle - RTL Settings - - QGCLabel { - id: armingCheckLabel - anchors.topMargin: _margins - anchors.left: parent.left - anchors.top: rtlSettings.bottom - text: qsTr("Arming Checks") - font.family: ScreenTools.demiboldFontFamily - } - - Rectangle { - id: armingCheckSettings - anchors.topMargin: _margins / 2 - anchors.left: parent.left - anchors.top: armingCheckLabel.bottom - width: armingCheckColumn.x + armingCheckColumn.width + _margins - height: armingCheckColumn.y + armingCheckColumn.height + _margins - color: palette.windowShade + + Rectangle { + id: rtlSettings + width: rltAltFinalField.x + rltAltFinalField.width + _margins + height: rltAltFinalField.y + rltAltFinalField.height + _margins + color: palette.windowShade + + Image { + id: icon + anchors.margins: _margins + anchors.left: parent.left + anchors.top: parent.top + height: ScreenTools.defaultFontPixelWidth * 20 + width: ScreenTools.defaultFontPixelWidth * 20 + sourceSize.width: width + mipmap: true + fillMode: Image.PreserveAspectFit + visible: false + source: "/qmlimages/ReturnToHomeAltitude.svg" + } + + ColorOverlay { + anchors.fill: icon + source: icon + color: palette.text + visible: _showIcon + } + + QGCRadioButton { + id: returnAtCurrentRadio + anchors.margins: _margins + anchors.left: _showIcon ? icon.right : parent.left + anchors.top: parent.top + text: qsTr("Return at current altitude") + checked: _rtlAltFact.value == 0 + exclusiveGroup: returnAltRadioGroup + + onClicked: _rtlAltFact.value = 0 + } + + QGCRadioButton { + id: returnAltRadio + anchors.topMargin: _margins + anchors.left: returnAtCurrentRadio.left + anchors.top: returnAtCurrentRadio.bottom + text: qsTr("Return at specified altitude:") + exclusiveGroup: returnAltRadioGroup + checked: _rtlAltFact.value != 0 + + onClicked: _rtlAltFact.value = 1500 + } + + FactTextField { + id: rltAltField + anchors.leftMargin: _margins + anchors.left: returnAltRadio.right + anchors.baseline: returnAltRadio.baseline + fact: _rtlAltFact + showUnits: true + enabled: returnAltRadio.checked + } + + QGCCheckBox { + id: homeLoiterCheckbox + anchors.left: returnAtCurrentRadio.left + anchors.baseline: landDelayField.baseline + checked: _rtlLoitTimeFact.value > 0 + text: qsTr("Loiter above Home for:") + + onClicked: _rtlLoitTimeFact.value = (checked ? 60 : 0) + } + + FactTextField { + id: landDelayField + anchors.topMargin: _margins * 1.5 + anchors.left: rltAltField.left + anchors.top: rltAltField.bottom + fact: _rtlLoitTimeFact + showUnits: true + enabled: homeLoiterCheckbox.checked === true + } + + QGCRadioButton { + id: landRadio + anchors.left: returnAtCurrentRadio.left + anchors.baseline: landSpeedField.baseline + text: qsTr("Land with descent speed:") + checked: _rtlAltFinalFact.value == 0 + exclusiveGroup: landLoiterRadioGroup + + onClicked: _rtlAltFinalFact.value = 0 + } + + FactTextField { + id: landSpeedField + anchors.topMargin: _margins * 1.5 + anchors.top: landDelayField.bottom + anchors.left: rltAltField.left + fact: _landSpeedFact + showUnits: true + enabled: landRadio.checked + } + + QGCRadioButton { + id: finalLoiterRadio + anchors.left: returnAtCurrentRadio.left + anchors.baseline: rltAltFinalField.baseline + text: qsTr("Final loiter altitude:") + exclusiveGroup: landLoiterRadioGroup + + onClicked: _rtlAltFinalFact.value = _rtlAltFact.value + } + + FactTextField { + id: rltAltFinalField + anchors.topMargin: _margins / 2 + anchors.left: rltAltField.left + anchors.top: landSpeedField.bottom + fact: _rtlAltFinalFact + enabled: finalLoiterRadio.checked + showUnits: true + } + } // Rectangle - RTL Settings + } // Column - RTL Settings Column { - id: armingCheckColumn - spacing: _margins + spacing: _margins / 2 - QGCLabel { text: qsTr("Be very careful when turning off arming checks. Could lead to loss of Vehicle control.") } - FactBitmask { fact: _armingCheck } - } - } + QGCLabel { + text: qsTr("Arming Checks") + font.family: ScreenTools.demiboldFontFamily + } + + Rectangle { + width: flowLayout.width + height: armingCheckInnerColumn.height + (_margins * 2) + color: palette.windowShade + + Column { + id: armingCheckInnerColumn + anchors.margins: _margins + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + spacing: _margins + + QGCLabel { + id: armingCheckWarning + anchors.left: parent.left + anchors.right: parent.right + wrapMode: Text.WordWrap + text: qsTr("Turning off arming checks can lead to loss of Vehicle control.") + } + + FactBitmask { + id: armingCheckBitmask + anchors.left: parent.left + anchors.right: parent.right + fact: _armingCheck + } + } + } // Rectangle - Arming checks + } // Column - Arming Checks + } // Flow } // QGCFlickable } // QGCViewPanel } // QGCView diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml index 71902f693..d1934d3d1 100644 --- a/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml +++ b/src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml @@ -46,151 +46,152 @@ QGCView { QGCFlickable { clip: true anchors.fill: parent - contentHeight: rtlSettings.y + rtlSettings.height - flickableDirection: Flickable.VerticalFlick - - QGCLabel { - id: failsafeTriggersLabel - text: qsTr("Failsafe Triggers") - font.family: ScreenTools.demiboldFontFamily - } - - 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: qsTr("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: qsTr("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: qsTr("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: qsTr("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: qsTr("Return to Launch") - font.family: ScreenTools.demiboldFontFamily - } - - 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: qsTr("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: qsTr("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 + contentWidth: flowLayout.width + contentHeight: flowLayout.height + + Flow { + id: flowLayout + width: panel.width // parent.width doesn't work for some reason + spacing: _margins + + Column { + spacing: _margins / 2 + + QGCLabel { + text: qsTr("Failsafe Triggers") + font.family: ScreenTools.demiboldFontFamily + } + + Rectangle { + 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: qsTr("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: qsTr("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: qsTr("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: qsTr("GCS failsafe") + checked: _failsafeGCSEnable.value != 0 + + onClicked: _failsafeGCSEnable.value = checked ? 1 : 0 + } + } // Rectangle - Failsafe trigger settings + } // Column - Failsafe trigger settings + + Column { + spacing: _margins / 2 + + QGCLabel { + text: qsTr("Return to Launch") + font.family: ScreenTools.demiboldFontFamily + } + + Rectangle { + width: rltAltField.x + rltAltField.width + _margins + height: rltAltField.y + rltAltField.height + _margins + color: palette.windowShade + + QGCRadioButton { + id: returnAtCurrentRadio + anchors.margins: _margins + anchors.left: parent.left + anchors.top: parent.top + text: qsTr("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: qsTr("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 + } // Column - RTL Settings + } // Flow } // QGCFlickable } // QGCViewPanel } // QGCView diff --git a/src/FactSystem/FactControls/FactBitmask.qml b/src/FactSystem/FactControls/FactBitmask.qml index 86203eebc..ad2145df2 100644 --- a/src/FactSystem/FactControls/FactBitmask.qml +++ b/src/FactSystem/FactControls/FactBitmask.qml @@ -6,7 +6,7 @@ import QGroundControl.Palette 1.0 import QGroundControl.Controls 1.0 import QGroundControl.ScreenTools 1.0 -Row { +Flow { spacing: ScreenTools.defaultFontPixelWidth property Fact fact: Fact { } -- 2.22.0