Newer
Older
import QtQuick 2.3
import QtQuick.Controls 1.2
import QGroundControl.ScreenTools 1.0
import QGroundControl.Vehicle 1.0
import QGroundControl.Controls 1.0
import QGroundControl.FactControls 1.0
height: header.height + (editorLoader.visible ? (editorLoader.height + (_margin * 3)) : 0)
color: _currentItem ? qgcPal.missionItemEditor : qgcPal.windowShade
property var map ///< Map control
property var masterController
property var missionItem ///< MissionItem associated with this editor
property bool readOnly ///< true: read only view, false: full editing view
signal insertWaypoint
signal insertComplexItem(string complexItemName)
property var _masterController: masterController
property var _missionController: _masterController.missionController
property bool _currentItem: missionItem.isCurrentItem
property bool _noMissionItemsAdded: ListView.view.model.count === 1
property real _sectionSpacer: ScreenTools.defaultFontPixelWidth / 2 // spacing between section headings
property bool _singleComplexItem: _missionController.complexMissionItemNames.length === 1
readonly property real _editFieldWidth: Math.min(width - _margin * 2, ScreenTools.defaultFontPixelWidth * 12)
readonly property real _margin: ScreenTools.defaultFontPixelWidth * 0.5
readonly property real _radius: ScreenTools.defaultFontPixelWidth * 0.5
readonly property real _hamburgerSize: header.height * 0.75
readonly property bool _waypointsOnlyMode: QGroundControl.corePlugin.options.missionWaypointsOnly
QGCPalette {
id: qgcPal
colorGroupEnabled: enabled
FocusScope {
id: currentItemScope
MouseArea {
anchors.fill: parent
onClicked: {
currentItemScope.focus = true
_root.clicked()
}
}
Component {
id: editPositionDialog
EditPositionDialog {
coordinate: missionItem.coordinate
onCoordinateChanged: missionItem.coordinate = coordinate
}
}
//-- Header
Row {
id: header
spacing: ScreenTools.defaultFontPixelWidth
height: ScreenTools.defaultFontPixelHeight * 3
anchors.verticalCenter: editorLoader.visible ? undefined : parent.verticalCenter
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
anchors.leftMargin: ScreenTools.defaultFontPixelWidth
Item {
width: ScreenTools.defaultFontPixelWidth * 3
height: parent.height
QGCColoredImage {
width: ScreenTools.defaultFontPixelHeight
height: width
sourceSize.height: width
source: "qrc:/qmlimages/Home.svg"
visible: missionItem.homePosition
color: qgcPal.text
anchors.centerIn: parent
}
QGCLabel {
text: missionItem.sequenceNumber
color: qgcPal.text
visible: !missionItem.homePosition
anchors.centerIn: parent
}
}
QGCLabel {
id: label
visible: !missionItem.isCurrentItem || !missionItem.isSimpleItem || _waypointsOnlyMode
text: missionItem.commandName
color: qgcPal.text
anchors.verticalCenter: parent.verticalCenter
}
QGCButton {
id: commandPicker
visible: !label.visible
text: missionItem.commandName
anchors.verticalCenter: parent.verticalCenter
Component {
id: commandDialog
MissionCommandDialog {
missionItem: _root.missionItem
}
}
onClicked: qgcView.showDialog(commandDialog, qsTr("Select Mission Command"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
}
id: hamburger
anchors.rightMargin: ScreenTools.defaultFontPixelWidth
anchors.right: parent.right
width: _hamburgerSize
height: _hamburgerSize
sourceSize.height: _hamburgerSize
source: "qrc:/qmlimages/Hamburger.svg"
visible: missionItem.isCurrentItem && missionItem.sequenceNumber !== 0
color: qgcPal.text
fillItem: hamburger
visible: hamburger.visible
onClicked: {
currentItemScope.focus = true
text: qsTr("Insert waypoint")
id: patternMenu
title: qsTr("Insert pattern")
visible: !_singleComplexItem
model: _missionController.complexMissionItemNames
onObjectAdded: patternMenu.insertItem(index, object)
onObjectRemoved: patternMenu.removeItem(object)
MenuItem {
text: modelData
onTriggered: insertComplexItem(modelData)
}
}
}
text: qsTr("Insert ") + _missionController.complexMissionItemNames[0]
onTriggered: insertComplexItem(_missionController.complexMissionItemNames[0])
}
MenuItem {
text: qsTr("Delete")
onTriggered: remove()
}
text: qsTr("Change command...")
MenuItem {
text: qsTr("Edit position...")
visible: missionItem.specifiesCoordinate
onTriggered: qgcView.showDialog(editPositionDialog, qsTr("Edit Position"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
}
visible: missionItem.isSimpleItem && !_waypointsOnlyMode
text: qsTr("Show all values")
checkable: true
checked: missionItem.isSimpleItem ? missionItem.rawEdit : false
visible: missionItem.isSimpleItem && !_waypointsOnlyMode
onTriggered: {
if (missionItem.rawEdit) {
if (missionItem.friendlyEditAllowed) {
missionItem.rawEdit = false
qgcView.showMessage(qsTr("Mission Edit"), qsTr("You have made changes to the mission item which cannot be shown in Simple Mode"), StandardButton.Ok)
Loader {
id: editorLoader
anchors.leftMargin: _margin
anchors.left: parent.left
property var masterController: _masterController
property real availableWidth: _root.width - (_margin * 2) ///< How wide the editor should be
property var editorRoot: _root