Skip to content
GeoAreaEditorLoader.qml 5.5 KiB
Newer Older
import QtQuick                  2.3
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.4
import QtQuick.Dialogs          1.2
import QtQml                    2.2

import QGroundControl               1.0
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


Valentin Platzgummer's avatar
Valentin Platzgummer committed
/// Wima Item edit control
Rectangle {
    id:     _root
    height: editorLoader.visible ? (editorLoader.y + editorLoader.height + (_margin * 2)) : (commandPicker.y + commandPicker.height + _margin / 2)
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    color:  interactive ? qgcPal.missionItemEditor : qgcPal.windowShade
    radius: _radius

    property var    map                 ///< Map control
    property var    masterController
    property bool   readOnly            ///< true: read only view, false: full editing view
    property var    rootQgcView
    property int    _index
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    property var    areaItem

    signal clicked
    signal remove

    property var    _masterController:          masterController
    property var    _missionController:         _masterController.missionController
    property bool   interactive:                areaItem.wimaAreaInteractive
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    property color  _outerTextColor:            interactive ? qgcPal.primaryButtonText : qgcPal.text
    property real   _sectionSpacer:             ScreenTools.defaultFontPixelWidth / 2  // spacing between section headings

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

    QGCPalette {
        id: qgcPal
        colorGroupEnabled: enabled
    }

    FocusScope {
        id:             currentItemScope
        anchors.fill:   parent

        MouseArea {
            anchors.fill:   parent
            onClicked: {
                currentItemScope.focus = true
                _root.clicked()
            }
        }
    }


    QGCLabel {
        id:                     label
        anchors.verticalCenter: commandPicker.verticalCenter
        anchors.leftMargin:     _margin
        anchors.left:           parent.left
        text:                   _index+1
        color:                  _outerTextColor
    }

    QGCColoredImage {
        id:                     hamburger
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth
        anchors.right:          parent.right
        anchors.verticalCenter: commandPicker.verticalCenter
        width:                  _hamburgerSize
        height:                 _hamburgerSize
        sourceSize.height:      _hamburgerSize
        source:                 "qrc:/qmlimages/Hamburger.svg"
Valentin Platzgummer's avatar
Valentin Platzgummer committed
        visible:                interactive
        color:                  qgcPal.text
    }

    QGCMouseArea {
        fillItem:   hamburger
        visible:    hamburger.visible
        onClicked: {
            currentItemScope.focus = true
            hamburgerMenu.popup()
        }

        Menu {
            id: hamburgerMenu

            MenuItem {
                text:           qsTr("Add Measurement Area")
                onTriggered:    wimaPlaner.addMeasurementArea()
            }

            MenuItem {
                text:           qsTr("Add Service Area")
                onTriggered:    wimaPlaner.addServiceArea()
            }

            MenuItem {
                text:           qsTr("Add Corridor")
                onTriggered:    wimaPlaner.addCorridor()
            MenuItem {
                text:           qsTr("Delete")
                onTriggered:    remove()
            }
                text:           qsTr("Change Area Type ...")
                onTriggered:    commandPicker.clicked()
    QGCButton {
        id:                     commandPicker
        anchors.topMargin:      _margin / 2
        anchors.leftMargin:     ScreenTools.defaultFontPixelWidth * 2
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth
        anchors.left:           label.right
        anchors.top:            parent.top
Valentin Platzgummer's avatar
Valentin Platzgummer committed
        visible:                interactive
        text:                   areaItem.objectName;

        Component {
            id: commandDialog

            MissionCommandDialog {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
                missionItem: areaItem
        //onClicked: qgcView.showDialog(commandDialog, qsTr("Select Mission Command"), qgcView.showDialogDefaultWidth, StandardButton.Cancel)
    QGCLabel {
        id:                 commandLabel
        anchors.fill:       commandPicker
Valentin Platzgummer's avatar
Valentin Platzgummer committed
        visible:            !interactive
        verticalAlignment:  Text.AlignVCenter
Valentin Platzgummer's avatar
Valentin Platzgummer committed
        text:               areaItem.objectName;
        color:              _outerTextColor
    }

    Loader {
        id:                 editorLoader
        anchors.leftMargin: _margin
        anchors.topMargin:  _margin
        anchors.left:       parent.left
        anchors.top:        commandPicker.bottom
Valentin Platzgummer's avatar
Valentin Platzgummer committed
        source:             areaItem.editorQML
        visible:            interactive

        property var    masterController:   _masterController
        property real   availableWidth:     _root.width - (_margin * 2) ///< How wide the editor should be
        property var    editorRoot:         _root
    }
} // Rectangle