Skip to content
CircularSurveyItemEditor.qml 7.75 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.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

    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 {
            id:     generalHeader
            text:   qsTr("General")
        GridLayout {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
            id: generalGrid
            anchors.left:   parent.left
            anchors.right:  parent.right
            columnSpacing:  _margin
            rowSpacing:     _margin
            columns:        2
            visible:        generalHeader.checked
Valentin Platzgummer's avatar
Valentin Platzgummer committed
            QGCLabel { text: qsTr("Altitude") }
            FactTextField {
                fact:                   missionItem.cameraCalc.distanceToSurface
                Layout.fillWidth:       true
Valentin Platzgummer's avatar
Valentin Platzgummer committed
            }

            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 {
                text: qsTr("Type")
                Layout.columnSpan: 2
            }

            property var typeFact: missionItem.type
            property int type: typeFact.value
            property var names: ["Circular", "Linear"]

            ExclusiveGroup{id: typeGroup}

            Repeater{
                model: missionItem.typeCount
                QGCRadioButton {
                    checked: index === generalGrid.type
                    text: qsTr(generalGrid.names[index])

                    onCheckedChanged: {
                        if (checked){
                            missionItem.type.value = index
                        }
                        checked = Qt.binding(function(){ return index === generalGrid.type})
                    }
                }
Valentin Platzgummer's avatar
Valentin Platzgummer committed
            }
        }

        SectionHeader {
            id:     transectsHeader
            text:   qsTr("Transects")
        }

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

Valentin Platzgummer's avatar
Valentin Platzgummer committed
            QGCLabel { text: qsTr("Distance") }
Valentin Platzgummer's avatar
Valentin Platzgummer committed
            FactTextField {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
               fact:                   missionItem.transectDistance
Valentin Platzgummer's avatar
Valentin Platzgummer committed
               Layout.fillWidth:       true
            }

            /*QGCSlider {
                id:                     rSlider
Valentin Platzgummer's avatar
Valentin Platzgummer committed
                minimumValue:           0.3
                maximumValue:           20
                stepSize:               0.1
                tickmarksEnabled:       false
                Layout.fillWidth:       true
                Layout.columnSpan:      2
                Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 1.5
                onValueChanged:         missionItem.deltaR.value = value
Valentin Platzgummer's avatar
Valentin Platzgummer committed
                Component.onCompleted:  value = missionItem.deltaR.defaultValue
                updateValueWhileDragging: true
            }*/

Valentin Platzgummer's avatar
Valentin Platzgummer committed
            QGCLabel { text: qsTr("Alpha") }
            FactTextField {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
                fact:                   missionItem.alpha
                Layout.fillWidth:       true
            }

            QGCLabel { text: qsTr("Min. Length") }
            FactTextField {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
                fact:                   missionItem.minLength
            anchors.left:   parent.left
            anchors.right:  parent.right
            columnSpacing:  _margin
            rowSpacing:     _margin
            columns:        2
            visible:        transectsHeader.checked

            QGCButton {
                text:               qsTr("Reverse")
                onClicked:          missionItem.reverse();
                Layout.fillWidth:  true
            }

            QGCButton {
                text:               qsTr("Reset Ref.")
                onClicked:          missionItem.resetReference();
                Layout.fillWidth:  true
            }

            anchors.left:   parent.left
            anchors.right:  parent.right
            spacing:        _margin

            BusyIndicator{
                id: indicator
                anchors.horizontalCenter: parent.horizontalCenter
                property bool calculating: missionItem.calculating
                running: calculating
                onCalculatingChanged: {
                    if(calculating){
                        visible = true
                    } else {
                       timer.restart()
                    }
                Component.onCompleted: {
                    if (calculating){
                        visible = true
                    }
                }

                       if (indicator.calculating == false){
                            indicator.visible = false
                       }
                   }
    } // Column
} // Rectangle