Skip to content
Snippets Groups Projects
FlightBrief.qml 12.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • import QtQuick                  2.3
    import QtQuick.Controls         1.2
    import QtQuick.Controls.Styles  1.4
    import QtQuick.Dialogs          1.2
    import QtQml                    2.2
    
    import QGroundControl                   1.0
    import QGroundControl.Airmap            1.0
    import QGroundControl.Airspace          1.0
    import QGroundControl.Controls          1.0
    import QGroundControl.Palette           1.0
    import QGroundControl.ScreenTools       1.0
    import QGroundControl.SettingsManager   1.0
    
    Item {
        id:                 _root
        implicitHeight:     briefRootCol.height
        implicitWidth:      briefRootCol.width
        property real baseHeight:  ScreenTools.defaultFontPixelHeight * 22
        property real baseWidth:   ScreenTools.defaultFontPixelWidth  * 40
        Column {
            id:             briefRootCol
            spacing:        ScreenTools.defaultFontPixelHeight * 0.25
            Rectangle {
                color:          qgcPal.windowShade
                anchors.right:  parent.right
                anchors.left:   parent.left
                height:         briefLabel.height + ScreenTools.defaultFontPixelHeight
                QGCLabel {
                    id:             briefLabel
                    text:           qsTr("Flight Brief")
                    font.pointSize: ScreenTools.mediumFontPointSize
                    font.family:    ScreenTools.demiboldFontFamily
                    anchors.centerIn: parent
                }
            }
            Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.5; }
            Flickable {
                clip:           true
                width:          baseWidth
                height:         baseHeight - buttonRow.height - ScreenTools.defaultFontPixelHeight
                contentHeight:  briefCol.height
                flickableDirection: Flickable.VerticalFlick
                Column {
                    id:                 briefCol
                    spacing:            ScreenTools.defaultFontPixelHeight * 0.5
                    anchors.right:      parent.right
                    anchors.left:       parent.left
                    QGCLabel {
                        text:           qsTr("Authorizations")
                    }
                    Rectangle {
                        color:          qgcPal.windowShade
                        anchors.right:  parent.right
                        anchors.left:   parent.left
                        height:         authCol.height + ScreenTools.defaultFontPixelHeight
                        Column {
                            id:                 authCol
                            spacing:            ScreenTools.defaultFontPixelHeight * 0.5
                            anchors.margins:    ScreenTools.defaultFontPixelWidth
                            anchors.right:      parent.right
                            anchors.left:       parent.left
                            anchors.verticalCenter: parent.verticalCenter
    
    Gus Grubba's avatar
    Gus Grubba committed
                            //-- Actual Authorization from some jurisdiction
                            Repeater {
                                visible:        QGroundControl.airspaceManager.flightPlan.authorizations.count > 0
                                model:          QGroundControl.airspaceManager.flightPlan.authorizations
                                Column {
                                    spacing:            ScreenTools.defaultFontPixelHeight * 0.5
                                    anchors.right:      parent.right
                                    anchors.left:       parent.left
                                    QGCLabel {
                                        text:           object.name
                                        font.family:    ScreenTools.demiboldFontFamily
                                        anchors.horizontalCenter: parent.horizontalCenter
                                    }
                                    Rectangle {
                                        anchors.right:      parent.right
                                        anchors.left:       parent.left
                                        height:             label.height + (ScreenTools.defaultFontPixelHeight * 0.5)
                                        color: {
                                            if(object.status === AirspaceFlightAuthorization.Pending)
                                                return _colorOrange
                                            if(object.status === AirspaceFlightAuthorization.Accepted || object.status === AirspaceFlightAuthorization.AcceptedOnSubmission)
                                                return _colorGreen
                                            if(object.status === AirspaceFlightAuthorization.Rejected || object.status === AirspaceFlightAuthorization.RejectedOnSubmission)
                                                return _colorRed
                                            return _colorGray
                                        }
                                        QGCLabel {
                                            id:     label
                                            color:  _colorWhite
                                            text: {
                                                if(object.status === AirspaceFlightAuthorization.Pending)
                                                    return qsTr("Authorization Pending")
                                                if(object.status === AirspaceFlightAuthorization.Accepted || object.status === AirspaceFlightAuthorization.AcceptedOnSubmission)
                                                    return qsTr("Authorization Accepted")
                                                if(object.status === AirspaceFlightAuthorization.Rejected || object.status === AirspaceFlightAuthorization.RejectedOnSubmission)
                                                    return qsTr("Authorization Rejected")
                                                return qsTr("Authorization Unknown")
                                            }
                                            anchors.centerIn: parent
                                        }
                                    }
                                }
    
    Gus Grubba's avatar
    Gus Grubba committed
                            //-- Implied Authorization from no jurisdiction
    
                            Rectangle {
                                anchors.right:      parent.right
                                anchors.left:       parent.left
    
    Gus Grubba's avatar
    Gus Grubba committed
                                height:             noAuthLabel.height + (ScreenTools.defaultFontPixelHeight * 0.5)
                                visible:            QGroundControl.airspaceManager.flightPlan.authorizations.count < 1
    
                                    if(_flightPermit === AirspaceFlightPlanProvider.PermitPending)
    
                                    if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired)
    
                                    if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected)
    
                                        return _colorRed
                                    return _colorGray
                                }
                                QGCLabel {
    
    Gus Grubba's avatar
    Gus Grubba committed
                                    id:     noAuthLabel
    
                                    color:  _colorWhite
                                    text: {
                                        if(_flightPermit === AirspaceFlightPlanProvider.PermitPending)
                                            return qsTr("Authorization Pending")
                                        if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted)
                                            return qsTr("Authorization Accepted")
                                        if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected)
                                            return qsTr("Authorization Rejected")
    
                                        if(_flightPermit === AirspaceFlightPlanProvider.PermitNotRequired)
                                            return qsTr("Authorization Not Required")
    
                                        return qsTr("Authorization Unknown")
                                    }
                                    anchors.centerIn: parent
                                }
                            }
                        }
                    }
                    Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 0.25; }
                    QGCLabel {
                        text:           qsTr("Rules & Compliance")
                        visible:        hasBriefRules()
                    }
                    ExclusiveGroup { id: ruleGroup }
                    ComplianceRules {
                        text:           qsTr("Rules you may be violating")
                        rules:          violationRules
                        visible:        violationRules && violationRules.count
                        color:          _colorRed
                        exclusiveGroup: ruleGroup
                        anchors.right:  parent.right
                        anchors.left:   parent.left
                        property var violationRules: QGroundControl.airspaceManager.flightPlan.rulesViolation
                    }
                    ComplianceRules {
                        text:           qsTr("Rules needing more information")
                        rules:          infoRules
                        color:          _colorOrange
                        visible:        infoRules && infoRules.count
                        exclusiveGroup: ruleGroup
                        anchors.right:  parent.right
                        anchors.left:   parent.left
                        property var infoRules: QGroundControl.airspaceManager.flightPlan.rulesInfo
                    }
                    ComplianceRules {
                        text:           qsTr("Rules you should review")
                        rules:          reviewRules
                        color:          _colorYellow
                        visible:        reviewRules && reviewRules.count
                        exclusiveGroup: ruleGroup
                        anchors.right:  parent.right
                        anchors.left:   parent.left
                        property var reviewRules: QGroundControl.airspaceManager.flightPlan.rulesReview
                    }
                    ComplianceRules {
                        text:           qsTr("Rules you are following")
                        rules:          followRules
                        color:          _colorGreen
                        visible:        followRules && followRules.count
                        exclusiveGroup: ruleGroup
                        anchors.right:  parent.right
                        anchors.left:   parent.left
                        property var followRules: QGroundControl.airspaceManager.flightPlan.rulesFollowing
                    }
                }
            }
            //-------------------------------------------------------------
            //-- File Flight Plan or Close
            Item { width: 1; height: ScreenTools.defaultFontPixelHeight; }
            Row {
                id:         buttonRow
                spacing: ScreenTools.defaultFontPixelWidth
                anchors.horizontalCenter: parent.horizontalCenter
                QGCButton {
                    text:           qsTr("Update Plan")
                    backRadius:     4
                    heightFactor:   0.3333
                    showBorder:     true
                    enabled:        _flightPermit !== AirspaceFlightPlanProvider.PermitNone && _dirty
                    visible:        planView
                    width:          ScreenTools.defaultFontPixelWidth * 12
                    onClicked: {
    
    Gus Grubba's avatar
    Gus Grubba committed
                        _dirty = false
    
                        QGroundControl.airspaceManager.flightPlan.updateFlightPlan()
    
                    }
                }
                QGCButton {
                    text:           qsTr("Submit Plan")
                    backRadius:     4
                    heightFactor:   0.3333
                    showBorder:     true
    
                    enabled:        _flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired
    
                    width:          ScreenTools.defaultFontPixelWidth * 12
                    visible:        planView
                    onClicked: {
    
    Gus Grubba's avatar
    Gus Grubba committed
                        QGroundControl.airspaceManager.flightPlan.submitFlightPlan()
    
                        mainWindow.enableToolbar()
                        rootLoader.sourceComponent = null
                    }
                }
                QGCButton {
                    text:           qsTr("Close")
                    backRadius:     4
                    heightFactor:   0.3333
                    showBorder:     true
                    width:          ScreenTools.defaultFontPixelWidth * 12
                    onClicked: {
                        mainWindow.enableToolbar()
                        rootLoader.sourceComponent = null
                    }
                }
            }
        }
    }