MissionItemEditor.qml 5.95 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2 3
import QtQuick                  2.2
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.2
Don Gagne's avatar
Don Gagne committed
4
import QtQuick.Dialogs          1.2
Don Gagne's avatar
Don Gagne committed
5 6 7

import QGroundControl.ScreenTools   1.0
import QGroundControl.Vehicle       1.0
Don Gagne's avatar
Don Gagne committed
8 9
import QGroundControl.Controls      1.0
import QGroundControl.FactControls  1.0
Don Gagne's avatar
Don Gagne committed
10 11
import QGroundControl.Palette       1.0

Don Gagne's avatar
Don Gagne committed
12 13 14

/// Mission item edit control
Rectangle {
15 16
    id: _root

17
    height: editorLoader.y + editorLoader.height + (_margin * 2)
18
    color:  _currentItem ? qgcPal.buttonHighlight : qgcPal.windowShade
19 20
    radius: _radius

21 22
    property var    missionItem     ///< MissionItem associated with this editor
    property bool   readOnly        ///< true: read only view, false: full editing view
Don Gagne's avatar
Don Gagne committed
23

24 25
    signal clicked
    signal remove
Adyasha Dash's avatar
Adyasha Dash committed
26
    signal insert
27
    signal moveHomeToMapCenter
Don Gagne's avatar
Don Gagne committed
28

29 30 31
    property bool   _currentItem:           missionItem.isCurrentItem
    property color  _outerTextColor:        _currentItem ? "black" : qgcPal.text
    property bool   _noMissionItemsAdded:   ListView.view.model.count == 1
32

33
    readonly property real  _editFieldWidth:    Math.min(width - _margin * 2, ScreenTools.defaultFontPixelWidth * 12)
34 35
    readonly property real  _margin:            ScreenTools.defaultFontPixelWidth / 2
    readonly property real  _radius:            ScreenTools.defaultFontPixelWidth / 2
36
    readonly property real  _hamburgerSize:     commandPicker.height * 0.75
37

Don Gagne's avatar
Don Gagne committed
38 39 40
    QGCPalette {
        id: qgcPal
        colorGroupEnabled: enabled
Don Gagne's avatar
Don Gagne committed
41 42
    }

43 44 45 46 47 48 49 50 51 52 53
    MouseArea {
        anchors.fill:   parent
        visible:        !missionItem.isCurrentItem
        onClicked:      _root.clicked()
    }

    QGCLabel {
        id:                     label
        anchors.verticalCenter: commandPicker.verticalCenter
        anchors.leftMargin:     _margin
        anchors.left:           parent.left
54
        text:                   missionItem.abbreviation
55 56 57
        color:                  _outerTextColor
    }

Gus Grubba's avatar
Gus Grubba committed
58
    QGCColoredImage {
59 60 61 62
        id:                     hamburger
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth
        anchors.right:          parent.right
        anchors.verticalCenter: commandPicker.verticalCenter
63 64 65
        width:                  _hamburgerSize
        height:                 _hamburgerSize
        sourceSize.height:      _hamburgerSize
66 67
        source:                 "qrc:/qmlimages/Hamburger.svg"
        visible:                missionItem.isCurrentItem && missionItem.sequenceNumber != 0
Gus Grubba's avatar
Gus Grubba committed
68
        color:                  qgcPal.windowShade
69 70 71 72 73 74 75 76 77

        MouseArea {
            anchors.fill:   parent
            onClicked:      hamburgerMenu.popup()

            Menu {
                id: hamburgerMenu

                MenuItem {
78
                    text:           qsTr("Insert")
Adyasha Dash's avatar
Adyasha Dash committed
79
                    onTriggered:    insert()
80 81 82
                }

                MenuItem {
83
                    text:           qsTr("Delete")
84 85 86
                    onTriggered:    remove()
                }

87 88 89 90 91
                MenuItem {
                    text:           "Change command..."
                    onTriggered:    commandPicker.clicked()
                }

92
                MenuSeparator {
93
                    visible: missionItem.isSimpleItem
94 95 96
                }

                MenuItem {
97
                    text:       qsTr("Show all values")
98
                    checkable:  true
99
                    checked:    missionItem.isSimpleItem ? missionItem.rawEdit : false
100
                    visible:    missionItem.isSimpleItem
101 102 103 104 105 106

                    onTriggered:    {
                        if (missionItem.rawEdit) {
                            if (missionItem.friendlyEditAllowed) {
                                missionItem.rawEdit = false
                            } else {
107
                                qgcView.showMessage(qsTr("Mission Edit"), qsTr("You have made changes to the mission item which cannot be shown in Simple Mode"), StandardButton.Ok)
108 109 110 111 112 113 114 115 116 117 118 119 120
                            }
                        } else {
                            missionItem.rawEdit = true
                        }
                        checked = missionItem.rawEdit
                    }
                }
            }
        }
    }

    QGCButton {
        id:                     commandPicker
121
        anchors.topMargin:      _margin / 2
122 123 124
        anchors.leftMargin:     ScreenTools.defaultFontPixelWidth * 2
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth
        anchors.left:           label.right
125
        anchors.top:            parent.top
126
        visible:                missionItem.sequenceNumber != 0 && missionItem.isCurrentItem && !missionItem.rawEdit && missionItem.isSimpleItem
127 128 129 130 131 132 133 134 135 136
        text:                   missionItem.commandName

        Component {
            id: commandDialog

            MissionCommandDialog {
                missionItem: _root.missionItem
            }
        }

137
        onClicked: qgcView.showDialog(commandDialog, qsTr("Select Mission Command"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
138 139 140 141
    }

    QGCLabel {
        anchors.fill:       commandPicker
142
        visible:            missionItem.sequenceNumber == 0 || !missionItem.isCurrentItem || !missionItem.isSimpleItem
143
        verticalAlignment:  Text.AlignVCenter
144
        text:               missionItem.sequenceNumber == 0 ? qsTr("Mission Settings") : missionItem.commandName
145 146 147 148 149 150 151 152 153
        color:              _outerTextColor
    }

    Loader {
        id:                 editorLoader
        anchors.leftMargin: _margin
        anchors.topMargin:  _margin
        anchors.left:       parent.left
        anchors.top:        commandPicker.bottom
154
        height:             item ? item.height : 0
155
        source:             missionItem.sequenceNumber == 0 ? "qrc:/qml/MissionSettingsEditor.qml" : missionItem.editorQml
156 157 158 159 160

        onLoaded: {
            item.visible = Qt.binding(function() { return _currentItem; })
        }

161 162
        property real   availableWidth: _root.width - (_margin * 2) ///< How wide the editor should be
        property var    editorRoot:     _root
163
    }
Don Gagne's avatar
Don Gagne committed
164
} // Rectangle