CorridorScanEditor.qml 7.09 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
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.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

27 28 29 30
    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
31 32 33 34 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

    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

        QGCLabel {
            anchors.left:   parent.left
            anchors.right:  parent.right
62
            text:           qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1))
63 64
            wrapMode:       Text.WordWrap
            color:          qgcPal.warningText
65
            visible:        missionItem.cameraShots > 0 && _cameraMinTriggerInterval !== 0 && _cameraMinTriggerInterval > missionItem.timeBetweenShots
66 67
        }

68

69
        CameraCalc {
70 71 72
            cameraCalc:                     missionItem.cameraCalc
            vehicleFlightIsFrontal:         true
            distanceToSurfaceLabel:         qsTr("Altitude")
Don Gagne's avatar
Don Gagne committed
73 74 75
            distanceToSurfaceAltitudeMode:  missionItem.followTerrain ?
                                                QGroundControl.AltitudeModeAboveTerrain :
                                                missionItem.cameraCalc.distanceToSurfaceRelative
76 77
            frontalDistanceLabel:           qsTr("Trigger Dist")
            sideDistanceLabel:              qsTr("Spacing")
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
        }

        SectionHeader {
            id:     corridorHeader
            text:   qsTr("Corridor")
        }

        GridLayout {
            anchors.left:   parent.left
            anchors.right:  parent.right
            columnSpacing:  _margin
            rowSpacing:     _margin
            columns:        2
            visible:        corridorHeader.checked

            QGCLabel { text: qsTr("Width") }
            FactTextField {
                fact:                   missionItem.corridorWidth
                Layout.fillWidth:       true
            }
98 99 100 101 102 103 104

            QGCLabel { text: qsTr("Turnaround dist") }
            FactTextField {
                fact:                   missionItem.turnAroundDistance
                Layout.fillWidth:       true
            }

Don Gagne's avatar
Don Gagne committed
105
            QGCOptionsComboBox {
106
                Layout.columnSpan:  2
Don Gagne's avatar
Don Gagne committed
107
                Layout.fillWidth:   true
108

Don Gagne's avatar
Don Gagne committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
                model: [
                    {
                        text:       qsTr("Images in turnarounds"),
                        fact:       missionItem.cameraTriggerInTurnAround,
                        enabled:    missionItem.hoverAndCaptureAllowed ? !missionItem.hoverAndCapture.rawValue : true,
                        visible:    true
                    },
                    {
                        text:       qsTr("Relative altitude"),
                        enabled:    missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain,
                        visible:    QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain),
                        checked:    missionItem.cameraCalc.distanceToSurfaceRelative
                    }
                ]

                onItemClicked: {
                    if (index == 1) {
                        missionItem.cameraCalc.distanceToSurfaceRelative = !missionItem.cameraCalc.distanceToSurfaceRelative
                        console.log(missionItem.cameraCalc.distanceToSurfaceRelative)
                    }
129 130 131 132 133 134 135
                }
            }
        }

        QGCButton {
            text:       qsTr("Rotate Entry Point")
            onClicked:  missionItem.rotateEntryPoint()
136 137
        }

138 139 140
        SectionHeader {
            id:         terrainHeader
            text:       qsTr("Terrain")
DonLakeFlyer's avatar
DonLakeFlyer committed
141
            checked:    missionItem.followTerrain
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
        }

        ColumnLayout {
            anchors.left:   parent.left
            anchors.right:  parent.right
            spacing:        _margin
            visible:        terrainHeader.checked

            QGCCheckBox {
                id:         followsTerrainCheckBox
                text:       qsTr("Vehicle follows terrain")
                checked:    missionItem.followTerrain
                onClicked:  missionItem.followTerrain = checked
            }

            GridLayout {
158 159 160 161 162
                Layout.fillWidth:   true
                columnSpacing:      _margin
                rowSpacing:         _margin
                columns:            2
                visible:            followsTerrainCheckBox.checked
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

                QGCLabel { text: qsTr("Tolerance") }
                FactTextField {
                    fact:               missionItem.terrainAdjustTolerance
                    Layout.fillWidth:   true
                }

                QGCLabel { text: qsTr("Max Climb Rate") }
                FactTextField {
                    fact:               missionItem.terrainAdjustMaxClimbRate
                    Layout.fillWidth:   true
                }

                QGCLabel { text: qsTr("Max Descent Rate") }
                FactTextField {
                    fact:               missionItem.terrainAdjustMaxDescentRate
                    Layout.fillWidth:   true
                }
            }
        }

184 185 186 187 188
        SectionHeader {
            id:     statsHeader
            text:   qsTr("Statistics")
        }

189
        TransectStyleComplexItemStats { }
190 191
    } // Column
} // Rectangle