Skip to content
CorridorScanEditor.qml 10.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 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

    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

    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

Don Gagne's avatar
 
Don Gagne committed
        ColumnLayout {
DonLakeFlyer's avatar
 
DonLakeFlyer committed
            id:             wizardModeColumn
            anchors.left:   parent.left
            anchors.right:  parent.right
Don Gagne's avatar
 
Don Gagne committed
            spacing:        _margin
DonLakeFlyer's avatar
 
DonLakeFlyer committed
            visible:        !missionItem.corridorPolyline.isValid || missionItem.wizardMode
Don Gagne's avatar
 
Don Gagne committed
            QGCLabel {
                Layout.fillWidth:   true
                wrapMode:           Text.WordWrap
                text:               qsTr("Use the Corridor Tools to create the polyline which defines the corridor.")
            }
DonLakeFlyer's avatar
 
DonLakeFlyer committed

            QGCButton {
                text:               qsTr("Done With Polyline")
                Layout.fillWidth:   true
                enabled:            missionItem.corridorPolyline.isValid
                onClicked: {
                    missionItem.wizardMode = false
                    editorRoot.selectNextNotReadyItem()
                }
            }
Don Gagne's avatar
 
Don Gagne committed
        Column {
Don Gagne's avatar
 
Don Gagne committed
            anchors.left:   parent.left
            anchors.right:  parent.right
            spacing:        _margin
DonLakeFlyer's avatar
 
DonLakeFlyer committed
            visible:        !wizardModeColumn.visible
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
            QGCTabBar {
                id:             tabBar
Don Gagne's avatar
 
Don Gagne committed
                anchors.left:   parent.left
                anchors.right:  parent.right
Don Gagne's avatar
 
Don Gagne committed
                Component.onCompleted: currentIndex = 0
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                QGCTabButton { text: qsTr("Grid") }
                QGCTabButton { text: qsTr("Camera") }
Don Gagne's avatar
 
Don Gagne committed
            Column {
                anchors.left:       parent.left
                anchors.right:      parent.right
                spacing:            _margin
                visible:            tabBar.currentIndex == 0

                QGCLabel {
                    anchors.left:   parent.left
                    anchors.right:  parent.right
                    text:           qsTr("WARNING: Photo interval is below minimum interval (%1 secs) supported by camera.").arg(_cameraMinTriggerInterval.toFixed(1))
                    wrapMode:       Text.WordWrap
                    color:          qgcPal.warningText
                    visible:        missionItem.cameraShots > 0 && _cameraMinTriggerInterval !== 0 && _cameraMinTriggerInterval > missionItem.timeBetweenShots
                }
Don Gagne's avatar
 
Don Gagne committed

                CameraCalcGrid {
                    cameraCalc:                     missionItem.cameraCalc
                    vehicleFlightIsFrontal:         true
                    distanceToSurfaceLabel:         qsTr("Altitude")
                    distanceToSurfaceAltitudeMode:  missionItem.followTerrain ?
                                                        QGroundControl.AltitudeModeAboveTerrain :
                                                        missionItem.cameraCalc.distanceToSurfaceRelative
                    frontalDistanceLabel:           qsTr("Trigger Dist")
                    sideDistanceLabel:              qsTr("Spacing")
Don Gagne's avatar
 
Don Gagne committed
                }
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                SectionHeader {
                    id:     corridorHeader
                    text:   qsTr("Corridor")
Don Gagne's avatar
 
Don Gagne committed
                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
                    }
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                    QGCLabel { text: qsTr("Turnaround dist") }
                    FactTextField {
                        fact:                   missionItem.turnAroundDistance
                        Layout.fillWidth:       true
Don Gagne's avatar
 
Don Gagne committed
                    }
Don Gagne's avatar
 
Don Gagne committed
                    QGCOptionsComboBox {
                        Layout.columnSpan:  2
                        Layout.fillWidth:   true
Don Gagne's avatar
 
Don Gagne committed
                        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)
                            }
                        }
                    }
                }
Don Gagne's avatar
 
Don Gagne committed
                QGCButton {
                    text:       qsTr("Rotate Entry Point")
                    onClicked:  missionItem.rotateEntryPoint()
                }
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                SectionHeader {
                    id:         terrainHeader
                    text:       qsTr("Terrain")
Don Gagne's avatar
 
Don Gagne committed
                    checked:    missionItem.followTerrain
Don Gagne's avatar
 
Don Gagne committed
                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
Don Gagne's avatar
 
Don Gagne committed
                    }
Don Gagne's avatar
 
Don Gagne committed
                    GridLayout {
Don Gagne's avatar
 
Don Gagne committed
                        Layout.fillWidth:   true
Don Gagne's avatar
 
Don Gagne committed
                        columnSpacing:      _margin
                        rowSpacing:         _margin
                        columns:            2
                        visible:            followsTerrainCheckBox.checked

                        QGCLabel { text: qsTr("Tolerance") }
                        FactTextField {
                            fact:               missionItem.terrainAdjustTolerance
                            Layout.fillWidth:   true
                        }
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                        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
                        }
Don Gagne's avatar
 
Don Gagne committed
                    }
Don Gagne's avatar
 
Don Gagne committed
                SectionHeader {
                    id:     statsHeader
                    text:   qsTr("Statistics")
                }
Don Gagne's avatar
 
Don Gagne committed

Don Gagne's avatar
 
Don Gagne committed
                TransectStyleComplexItemStats { }
            } // Grid Column

            Column {
                anchors.left:       parent.left
                anchors.right:      parent.right
                spacing:            _margin
                visible:            tabBar.currentIndex == 1

                CameraCalcCamera {
                    cameraCalc:                     missionItem.cameraCalc
                    vehicleFlightIsFrontal:         true
                    distanceToSurfaceLabel:         qsTr("Altitude")
                    distanceToSurfaceAltitudeMode:  missionItem.followTerrain ?
                                                        QGroundControl.AltitudeModeAboveTerrain :
                                                        missionItem.cameraCalc.distanceToSurfaceRelative
                    frontalDistanceLabel:           qsTr("Trigger Dist")
                    sideDistanceLabel:              qsTr("Spacing")
                }
Don Gagne's avatar
 
Don Gagne committed
            }
Don Gagne's avatar
 
Don Gagne committed
        }
Don Gagne's avatar
 
Don Gagne committed
    }
Don Gagne's avatar
 
Don Gagne committed
}