CircularSurveyItemEditor.qml 6.62 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import QtQuick          2.3
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.4
import QtQuick.Dialogs  1.2
import QtQuick.Extras   1.4
import QtQuick.Layouts  1.2

import QGroundControl               1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.Vehicle       1.0
import QGroundControl.Controls      1.0
import QGroundControl.FactSystem    1.0
import QGroundControl.FactControls  1.0
import QGroundControl.Palette       1.0
import QGroundControl.FlightMap     1.0

Rectangle {
    id:         _root
    height:     visible ? (editorColumn.height + (_margin * 2)) : 0
    width:      availableWidth
    color:      qgcPal.windowShadeDark
    radius:     _radius

    // The following properties must be available up the hierarchy chain
    //property real   availableWidth    ///< Width for control
    //property var    missionItem       ///< Mission Item for editor

    property real   _margin:                    ScreenTools.defaultFontPixelWidth / 2
    property real   _fieldWidth:                ScreenTools.defaultFontPixelWidth * 10.5
    property var    _vehicle:                   QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle
    property real   _cameraMinTriggerInterval:  missionItem.cameraCalc.minTriggerInterval.rawValue

33 34
    property var    _generator: 				missionItem.generator

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
    function polygonCaptureStarted() {
        missionItem.clearPolygon()
    }

    function polygonCaptureFinished(coordinates) {
        for (var i=0; i<coordinates.length; i++) {
            missionItem.addPolygonCoordinate(coordinates[i])
        }
    }

    function polygonAdjustVertex(vertexIndex, vertexCoordinate) {
        missionItem.adjustPolygonCoordinate(vertexIndex, vertexCoordinate)
    }

    function polygonAdjustStarted() { }
    function polygonAdjustFinished() { }

    QGCPalette { id: qgcPal; colorGroupEnabled: true }

    Column {
        id:                 editorColumn
        anchors.margins:    _margin
        anchors.top:        parent.top
        anchors.left:       parent.left
        anchors.right:      parent.right
        spacing:            _margin

        SectionHeader {
63 64
            id:     generalHeader
            text:   qsTr("General")
65 66
        }

67

68
        GridLayout {
69
            id: generalGrid
70 71 72 73 74
            anchors.left:   parent.left
            anchors.right:  parent.right
            columnSpacing:  _margin
            rowSpacing:     _margin
            columns:        2
75
            visible:        generalHeader.checked
76

Valentin Platzgummer's avatar
Valentin Platzgummer committed
77 78 79 80
            QGCLabel { text: qsTr("Altitude") }
            FactTextField {
                fact:                   missionItem.cameraCalc.distanceToSurface
                Layout.fillWidth:       true
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
            }

            QGCCheckBox {
                id:                 relAlt
                text:               qsTr("Relative altitude")
                checked:            missionItem.cameraCalc.distanceToSurfaceRelative
                enabled:            missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain
                visible:            QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain)
                onClicked:          missionItem.cameraCalc.distanceToSurfaceRelative = checked
                Layout.fillWidth:   true
                Layout.columnSpan:  2

                Connections {
                    target: missionItem.cameraCalc
                    onDistanceToSurfaceRelativeChanged: relAlt.checked = missionItem.cameraCalc.distanceToSurfaceRelative
                }
            }

            QGCLabel {
100
                text: qsTr("Generator Type")
101 102 103
                Layout.columnSpan: 2
            }

104 105 106
            QGCComboBox {
                property var names: missionItem.generatorNameList
                property int length: names.length
107

108 109 110 111
                anchors.margins:    ScreenTools.defaultFontPixelWidth
                currentIndex:       missionItem.generatorIndex
                Layout.columnSpan:  2
                model:              missionItem.generatorNameList
112

113 114
                onActivated: {
                    missionItem.switchToGenerator(index)
115 116 117 118 119 120 121 122 123 124 125 126 127
                }
            }

            QGCLabel {
                text: qsTr("Variant")
                Layout.columnSpan: 2
            }

            GridLayout{
                Layout.columnSpan: 2

                columnSpacing:  _margin
                rowSpacing:     _margin
128
                columns:        6
129 130 131 132 133 134 135 136 137 138

                Repeater{
                    id: variantRepeater

                    property var fact: missionItem.variant
                    property int variant: fact.value
                    property var names: missionItem.variantNames
                    property int len: missionItem.variantNames.length

                    model: len
139
                    delegate: QGCRadioButton {
140
                        checked: index === variantRepeater.variant
141
                        text:  variantRepeater.names[index] ? variantRepeater.names[index]: ""
142 143 144 145 146 147 148

                        onCheckedChanged: {
                            if (checked){
                                missionItem.variant.value = index
                            }
                            checked = Qt.binding(function(){ return index === variantRepeater.variant})
                        }
149 150
                    }
                }
Valentin Platzgummer's avatar
Valentin Platzgummer committed
151
            }
152 153
        }

154
        // Generator Editor
155 156
        SectionHeader {
            id:     transectsHeader
157
            text:   qsTr("Generator")
158
        }
159 160 161 162 163
        Loader{
           source: _generator.editorQml
           property var generator: _generator
           property real margin: _margin
           visible: transectsHeader.checked
164 165 166
        }


167
        Column{
168 169 170 171
            anchors.left:   parent.left
            anchors.right:  parent.right
            spacing:        _margin

172 173 174
            BusyIndicator{
                id: indicator
                anchors.horizontalCenter: parent.horizontalCenter
175 176
                property bool calculating: missionItem.calculating
                running: calculating
177
                visible: calculating || timer.running
178

179
                onCalculatingChanged: {
180 181
                    if(!calculating){
                       // defer hideing
182 183
                       timer.restart()
                    }
184 185
                }

186 187
                Timer{
                   id: timer
188
                   interval: 1000
189
                   repeat: false
190
                   running: false
191 192
                }
            }
193
        }
194 195
    } // Column
} // Rectangle