地面站终端 App
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

284 lines
11 KiB

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QGroundControl.FactSystem 1.0
import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
Rectangle {
QGCPalette { id: palette; colorGroupEnabled: true }
width: 600
height: 600
color: palette.window
property int flightLineWidth: 2 // width of lines for flight graphic
property int loiterAltitudeColumnWidth: 180 // width of loiter altitude column
property int shadedMargin: 20 // margin inset for shaded areas
property int controlVerticalSpacing: 10 // vertical spacing between controls
property int homeWidth: 50 // width of home graphic
property int planeWidth: 40 // width of plane graphic
property int arrowToHomeSpacing: 20 // space between down arrow and home graphic
property int arrowWidth: 18 // width for arrow graphic
property int firstColumnWidth: 220 // Width of first column in return home triggers area
Column {
anchors.fill: parent
QGCLabel {
text: "SAFETY CONFIG"
font.pointSize: 20
}
Item { height: 20; width: 10 } // spacer
//-----------------------------------------------------------------
//-- Return Home Triggers
QGCLabel { text: "Triggers For Return Home"; color: palette.text; font.pointSize: 20 }
Item { height: 10; width: 10 } // spacer
Rectangle {
width: parent.width
height: triggerColumn.height
color: palette.windowShade
Column {
id: triggerColumn
spacing: controlVerticalSpacing
anchors.margins: shadedMargin
anchors.left: parent.left
// Top margin
Item { height: 1; width: 10 }
Row {
spacing: 10
QGCLabel { text: "RC Transmitter Signal Loss"; width: firstColumnWidth; anchors.baseline: rcLossField.baseline }
QGCLabel { text: "Return Home after"; anchors.baseline: rcLossField.baseline }
FactTextField {
id: rcLossField
fact: Fact { name: "COM_RC_LOSS_T" }
showUnits: true
}
}
Row {
spacing: 10
FactCheckBox {
id: telemetryTimeoutCheckbox
fact: Fact { name: "COM_DL_LOSS_EN" }
checkedValue: 1
uncheckedValue: 0
text: "Telemetry Signal Timeout"
anchors.baseline: telemetryLossField.baseline
width: firstColumnWidth
}
QGCLabel { text: "Return Home after"; anchors.baseline: telemetryLossField.baseline }
FactTextField {
id: telemetryLossField
fact: Fact { name: "COM_DL_LOSS_T" }
showUnits: true
enabled: telemetryTimeoutCheckbox.checked
}
}
// Bottom margin
Item { height: 1; width: 10 }
}
}
Item { height: 20; width: 10 } // spacer
//-----------------------------------------------------------------
//-- Return Home Settings
QGCLabel { text: "Return Home Settings"; font.pointSize: 20 }
Item { height: 10; width: 10 } // spacer
Rectangle {
width: parent.width
height: settingsColumn.height
color: palette.windowShade
Column {
id: settingsColumn
width: parent.width
anchors.margins: shadedMargin
anchors.left: parent.left
Item { height: shadedMargin; width: 10 } // top margin
// This item is the holder for the climb alt and loiter seconds fields
Item {
width: parent.width
height: climbAltitudeColumn.height
Column {
id: climbAltitudeColumn
spacing: controlVerticalSpacing
QGCLabel { text: "Climb to altitude of" }
FactTextField {
id: climbField
fact: Fact { name: "RTL_RETURN_ALT" }
showUnits: true
}
}
Column {
x: flightGraphic.width - 200
spacing: controlVerticalSpacing
QGCCheckBox {
id: homeLoiterCheckbox
property Fact fact: Fact { name: "RTL_LAND_DELAY" }
checked: fact.value > 0
text: "Loiter at Home altitude for"
onClicked: {
fact.value = checked ? 60 : -1
}
}
FactTextField {
fact: Fact { name: "RTL_LAND_DELAY" }
showUnits: true
enabled: homeLoiterCheckbox.checked == true
}
}
}
Item { height: 20; width: 10 } // spacer
// This row holds the flight graphic and the home loiter alt column
Row {
width: parent.width
spacing: 20
// Flight graphic
Item {
id: flightGraphic
width: parent.width - loiterAltitudeColumnWidth
height: 200 // controls the height of the flight graphic
Rectangle {
x: planeWidth / 2
height: planeImage.y - 5
width: flightLineWidth
color: palette.button
}
Rectangle {
x: planeWidth / 2
height: flightLineWidth
width: parent.width - x
color: palette.button
}
Rectangle {
x: parent.width - flightLineWidth
height: parent.height - homeWidth - arrowToHomeSpacing
width: flightLineWidth
color: palette.button
}
QGCColoredImage {
id: planeImage
y: parent.height - planeWidth - 40
source: "/qml/SafetyComponentPlane.png"
fillMode: Image.PreserveAspectFit
width: planeWidth
height: planeWidth
smooth: true
color: palette.button
}
QGCColoredImage {
x: planeWidth + 70
y: parent.height - height - 20
width: 80
height: parent.height / 2
source: "/qml/SafetyComponentTree.svg"
fillMode: Image.Stretch
smooth: true
color: palette.windowShadeDark
}
QGCColoredImage {
x: planeWidth + 15
y: parent.height - height
width: 100
height: parent.height * .75
source: "/qml/SafetyComponentTree.svg"
fillMode: Image.PreserveAspectFit
smooth: true
color: palette.button
}
QGCColoredImage {
x: parent.width - (arrowWidth/2) - 1
y: parent.height - homeWidth - arrowToHomeSpacing - 2
source: "/qml/SafetyComponentArrowDown.png"
fillMode: Image.PreserveAspectFit
width: arrowWidth
height: arrowWidth
smooth: true
color: palette.button
}
QGCColoredImage {
id: homeImage
x: parent.width - (homeWidth / 2)
y: parent.height - homeWidth
source: "/qml/SafetyComponentHome.png"
fillMode: Image.PreserveAspectFit
width: homeWidth
height: homeWidth
smooth: true
color: palette.button
}
}
Column {
spacing: controlVerticalSpacing
QGCLabel {
text: "Home loiter altitude";
color: palette.text;
enabled: homeLoiterCheckbox.checked == true
}
FactTextField {
id: descendField;
fact: Fact { name: "RTL_DESCEND_ALT" }
enabled: homeLoiterCheckbox.checked == true
showUnits: true
}
}
}
Item { height: shadedMargin; width: 10 } // bottom margin
}
}
QGCLabel {
property Fact fact: Fact { name: "NAV_RCL_OBC" }
width: parent.width
font.pointSize: 14
text: "Warning: You have an advanced safety configuration set using the NAV_RCL_OBC parameter. The above settings may not apply.";
visible: fact.value != 0
wrapMode: Text.Wrap
}
QGCLabel {
property Fact fact: Fact { name: "NAV_DLL_OBC" }
width: parent.width
font.pointSize: 14
text: "Warning: You have an advanced safety configuration set using the NAV_DLL_OBC parameter. The above settings may not apply.";
visible: fact.value != 0
wrapMode: Text.Wrap
}
}
}