StructureScanEditor.qml 7.23 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
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

// Editor for Survery mission items
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

28 29 30 31
    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
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

    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

60 61 62 63 64 65 66 67
        QGCLabel {
            anchors.left:   parent.left
            anchors.right:  parent.right
            text:           qsTr("Note: Polygon respresents structure surface not vehicle flight path.")
            wrapMode:       Text.WordWrap
            font.pointSize: ScreenTools.smallFontPointSize
        }

68 69 70
        QGCLabel {
            anchors.left:   parent.left
            anchors.right:  parent.right
71
            text:           qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1))
72 73
            wrapMode:       Text.WordWrap
            color:          qgcPal.warningText
74
            visible:        missionItem.cameraShots > 0 && _cameraMinTriggerInterval !== 0 && _cameraMinTriggerInterval > missionItem.timeBetweenShots
75 76
        }

77
        CameraCalc {
78 79 80 81 82 83
            cameraCalc:                     missionItem.cameraCalc
            vehicleFlightIsFrontal:         false
            distanceToSurfaceLabel:         qsTr("Scan Distance")
            distanceToSurfaceAltitudeMode:  QGroundControl.AltitudeModeNone
            frontalDistanceLabel:           qsTr("Layer Height")
            sideDistanceLabel:              qsTr("Trigger Distance")
84
        }
85

86 87 88 89
        SectionHeader {
            id:         scanHeader
            text:       qsTr("Scan")
        }
90

91 92 93 94 95 96 97 98 99 100 101 102 103
        Column {
            anchors.left:   parent.left
            anchors.right:  parent.right
            spacing:        _margin
            visible:        scanHeader.checked

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

104 105 106 107 108 109 110 111
                FactComboBox {
                    fact:               missionItem.startFromTop
                    indexModel:         true
                    model:              [ qsTr("Start Scan From Bottom"), qsTr("Start Scan From Top") ]
                    Layout.columnSpan:  2
                    Layout.fillWidth:   true
                }

DonLakeFlyer's avatar
DonLakeFlyer committed
112
                QGCLabel {
Don Gagne's avatar
Don Gagne committed
113
                    text:       qsTr("Structure Height")
DonLakeFlyer's avatar
DonLakeFlyer committed
114 115 116 117 118 119
                }
                FactTextField {
                    fact:               missionItem.structureHeight
                    Layout.fillWidth:   true
                }

120
                QGCLabel { text: qsTr("Scan Bottom Alt") }
121
                AltitudeFactTextField {
122
                    fact:               missionItem.scanBottomAlt
123
                    altitudeMode:       QGroundControl.AltitudeModeRelative
124 125 126
                    Layout.fillWidth:   true
                }

127
                QGCLabel { text: qsTr("Entrance/Exit Alt") }
128
                AltitudeFactTextField {
129
                    fact:               missionItem.entranceAlt
130
                    altitudeMode:       QGroundControl.AltitudeModeRelative
131 132 133
                    Layout.fillWidth:   true
                }

134
                QGCLabel {
135
                    text:       qsTr("Gimbal Pitch")
136 137 138 139 140 141 142
                    visible:    missionItem.cameraCalc.isManualCamera
                }
                FactTextField {
                    fact:               missionItem.gimbalPitch
                    Layout.fillWidth:   true
                    visible:            missionItem.cameraCalc.isManualCamera
                }
143 144
            }

145 146 147 148 149
            Item {
                height: ScreenTools.defaultFontPixelHeight / 2
                width:  1
            }

150 151 152
            QGCButton {
                text:       qsTr("Rotate entry point")
                onClicked:  missionItem.rotateEntryPoint()
153
            }
154
        } // Column - Scan
155 156 157 158 159 160 161 162 163 164 165

        SectionHeader {
            id:     statsHeader
            text:   qsTr("Statistics")
        }

        Grid {
            columns:        2
            columnSpacing:  ScreenTools.defaultFontPixelWidth
            visible:        statsHeader.checked

166 167 168
            QGCLabel { text: qsTr("Layers") }
            QGCLabel { text: missionItem.layers.valueString }

169
            QGCLabel { text: qsTr("Layer Height") }
170 171
            QGCLabel { text: missionItem.cameraCalc.adjustedFootprintFrontal.valueString + " " + QGroundControl.appSettingsDistanceUnitsString }

172 173 174 175 176 177 178
            QGCLabel { text: qsTr("Top Layer Alt") }
            QGCLabel { text: QGroundControl.metersToAppSettingsDistanceUnits(missionItem.topFlightAlt).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString }

            QGCLabel { text: qsTr("Bottom Layer Alt") }
            QGCLabel { text: QGroundControl.metersToAppSettingsDistanceUnits(missionItem.bottomFlightAlt).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString }

            QGCLabel { text: qsTr("Photo Count") }
179 180
            QGCLabel { text: missionItem.cameraShots }

181
            QGCLabel { text: qsTr("Photo Interval") }
182
            QGCLabel { text: missionItem.timeBetweenShots.toFixed(1) + " " + qsTr("secs") }
183

184
            QGCLabel { text: qsTr("Trigger Distance") }
185
            QGCLabel { text: missionItem.cameraCalc.adjustedFootprintSide.valueString + " " + QGroundControl.appSettingsDistanceUnitsString }
186
        }
187 188
    } // Column
} // Rectangle