Newer
Older
Gus Grubba
committed
import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.11
import QGroundControl.ScreenTools 1.0
import QGroundControl.Vehicle 1.0
import QGroundControl.Controls 1.0
import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0
// Editor for Simple mission items
Rectangle {
color: qgcPal.windowShadeDark
radius: _radius
property bool _specifiesAltitude: missionItem.specifiesAltitude
property real _margin: ScreenTools.defaultFontPixelHeight / 2
property bool _supportsTerrainFrame: missionItem
property string _altModeRelativeHelpText: qsTr("Altitude relative to home altitude")
property string _altModeAbsoluteHelpText: qsTr("Altitude above mean sea level")
property string _altModeAboveTerrainHelpText: qsTr("Altitude above terrain\nActual AMSL altitude: %1 %2").arg(missionItem.amslAltAboveTerrain.valueString).arg(missionItem.amslAltAboveTerrain.units)
property string _altModeTerrainFrameHelpText: qsTr("Using terrain reference frame")
function updateAltitudeModeText() {
altModeLabel.text = qsTr("Altitude")
altModeHelp.text = _altModeRelativeHelpText
} else if (missionItem.altitudeMode === QGroundControl.AltitudeModeAbsolute) {
altModeLabel.text = qsTr("Above Mean Sea Level")
altModeHelp.text = _altModeAbsoluteHelpText
} else if (missionItem.altitudeMode === QGroundControl.AltitudeModeAboveTerrain) {
altModeLabel.text = qsTr("Above Terrain")
altModeHelp.text = Qt.binding(function() { return _altModeAboveTerrainHelpText })
} else if (missionItem.altitudeMode === QGroundControl.AltitudeModeTerrainFrame) {
altModeLabel.text = qsTr("Terrain Frame")
altModeHelp.text = _altModeTerrainFrameHelpText
} else {
altModeLabel.text = qsTr("Internal Error")
altModeHelp.text = ""
Component.onCompleted: updateAltitudeModeText()
Connections {
target: missionItem
onAltitudeModeChanged: updateAltitudeModeText()
}
anchors.margins: _margin
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
ColumnLayout {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
visible: missionItem.wizardMode
QGCLabel {
text: qsTr("Adjust the initial launch location by selecting 'P' and dragging it to the correct location.")
Layout.fillWidth: true
wrapMode: Text.WordWrap
QGCLabel {
text: qsTr("Adjust the takeoff completion location by dragging it to the correct location.")
Layout.fillWidth: true
wrapMode: Text.WordWrap
}
QGCButton {
text: qsTr("Done Adjusting")
Layout.fillWidth: true
onClicked: {
missionItem.wizardMode = false
editorRoot.selectNextNotReadyItem()
Column {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
visible: !missionItem.wizardMode
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
text: missionItem.rawEdit ?
qsTr("Provides advanced access to all commands/parameters. Be very careful!") :
missionItem.commandDescription
}
GridLayout {
anchors.left: parent.left
anchors.right: parent.right
columns: 2
QGCLabel {
text: object.name
visible: object.name !== ""
Layout.column: 0
Layout.row: index
}
}
Repeater {
model: missionItem.comboboxFacts
FactComboBox {
indexModel: false
model: object.enumStrings
fact: object
font.pointSize: ScreenTools.smallFontPointSize
Layout.column: 1
Layout.row: index
Layout.fillWidth: true
}
}
}
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
Rectangle {
anchors.left: parent.left
anchors.right: parent.right
height: altColumn.y + altColumn.height + _margin
color: qgcPal.windowShade
visible: _specifiesAltitude
Column {
id: altColumn
anchors.margins: _margin
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
Item {
width: altHamburger.x + altHamburger.width
height: altModeLabel.height
QGCLabel { id: altModeLabel }
QGCColoredImage {
id: altHamburger
anchors.leftMargin: ScreenTools.defaultFontPixelWidth / 4
anchors.left: altModeLabel.right
anchors.verticalCenter: altModeLabel.verticalCenter
width: ScreenTools.defaultFontPixelHeight / 2
height: width
sourceSize.height: height
source: "/res/DropArrow.svg"
color: qgcPal.text
QGCMouseArea {
anchors.fill: parent
onClicked: altHamburgerMenu.popup()
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
QGCMenu {
id: altHamburgerMenu
QGCMenuItem {
text: qsTr("Altitude Relative To Home")
checkable: true
checked: missionItem.altitudeMode === QGroundControl.AltitudeModeRelative
onTriggered: missionItem.altitudeMode = QGroundControl.AltitudeModeRelative
}
QGCMenuItem {
text: qsTr("Altitude Above Mean Sea Level")
checkable: true
checked: missionItem.altitudeMode === QGroundControl.AltitudeModeAbsolute
visible: QGroundControl.corePlugin.options.showMissionAbsoluteAltitude
onTriggered: missionItem.altitudeMode = QGroundControl.AltitudeModeAbsolute
}
QGCMenuItem {
text: qsTr("Altitude Above Terrain")
checkable: true
checked: missionItem.altitudeMode === QGroundControl.AltitudeModeAboveTerrain
onTriggered: missionItem.altitudeMode = QGroundControl.AltitudeModeAboveTerrain
visible: missionItem.specifiesCoordinate
}
QGCMenuItem {
text: qsTr("Terrain Frame")
checkable: true
checked: missionItem.altitudeMode === QGroundControl.AltitudeModeTerrainFrame
visible: missionItem.altitudeMode === QGroundControl.AltitudeModeTerrainFrame
onTriggered: missionItem.altitudeMode = QGroundControl.AltitudeModeTerrainFrame
}
AltitudeFactTextField {
id: altField
fact: missionItem.altitude
altitudeMode: missionItem.altitudeMode
anchors.left: parent.left
anchors.right: parent.right
}
QGCLabel {
id: altModeHelp
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
anchors.left: parent.left
anchors.right: parent.right
}
GridLayout {
anchors.left: parent.left
anchors.right: parent.right
flow: GridLayout.TopToBottom
rows: missionItem.textFieldFacts.count +
missionItem.nanFacts.count +
(missionItem.speedSection.available ? 1 : 0)
columns: 2
QGCCheckBox {
text: object.name
checked: !isNaN(object.rawValue)
onClicked: object.rawValue = checked ? 0 : NaN
}
QGCCheckBox {
id: flightSpeedCheckbox
text: qsTr("Flight Speed")
checked: missionItem.speedSection.specifyFlightSpeed
onClicked: missionItem.speedSection.specifyFlightSpeed = checked
visible: missionItem.speedSection.available
}
FactTextField {
showUnits: true
fact: object
Layout.fillWidth: true
enabled: !object.readOnly
}
Repeater {
model: missionItem.nanFacts
FactTextField {
showUnits: true
fact: object
Layout.fillWidth: true
enabled: !isNaN(object.rawValue)
}
}
enabled: flightSpeedCheckbox.checked
visible: missionItem.speedSection.available
CameraSection {
checked: missionItem.cameraSection.settingsSpecified
visible: missionItem.cameraSection.available