Skip to content
SetupPage.qml 4.58 KiB
Newer Older
Don Gagne's avatar
Don Gagne committed
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

import QtQuick          2.3
import QtQuick.Controls 1.2
Don Gagne's avatar
Don Gagne committed
import QtQuick.Dialogs  1.2
DonLakeFlyer's avatar
DonLakeFlyer committed
import QtQuick.Layouts  1.2
Don Gagne's avatar
Don Gagne committed

import QGroundControl               1.0
import QGroundControl.FactSystem    1.0
import QGroundControl.FactControls  1.0
import QGroundControl.Palette       1.0
import QGroundControl.Controls      1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.Controllers   1.0

/// Base view control for all Setup pages
QGCView {
Gus Grubba's avatar
Gus Grubba committed
    id:             setupView
    viewPanel:      setupPanel
    enabled:        !_disableDueToArmed && !_disableDueToFlying
    property alias  pageComponent:      pageLoader.sourceComponent
    property string pageName:           vehicleComponent ? vehicleComponent.name : ""
    property string pageDescription:    vehicleComponent ? vehicleComponent.description : ""
    property real   availableWidth:     width - pageLoader.x
    property real   availableHeight:    height - pageLoader.y
DonLakeFlyer's avatar
DonLakeFlyer committed
    property bool   showAdvanced:       false
    property alias  advanced:           advancedCheckBox.checked
    property var    _activeVehicle:         QGroundControl.multiVehicleManager.activeVehicle
Don Gagne's avatar
 
Don Gagne committed
    property bool   _vehicleIsRover:        _activeVehicle ? _activeVehicle.rover : false
    property bool   _vehicleArmed:          _activeVehicle ? _activeVehicle.armed : false
    property bool   _vehicleFlying:         _activeVehicle ? _activeVehicle.flying : false
    property bool   _disableDueToArmed:     vehicleComponent ? (!vehicleComponent.allowSetupWhileArmed && _vehicleArmed) : false
Don Gagne's avatar
 
Don Gagne committed
    // FIXME: The _vehicleIsRover checkl is a hack to work around https://github.com/PX4/Firmware/issues/10969
Don Gagne's avatar
 
Don Gagne committed
    property bool   _disableDueToFlying:    vehicleComponent ? (!_vehicleIsRover && !vehicleComponent.allowSetupWhileFlying && _vehicleFlying) : false
    property string _disableReason:         _disableDueToArmed ? qsTr("armed") : qsTr("flying")
Gus Grubba's avatar
Gus Grubba committed
    property real _margins:             ScreenTools.defaultFontPixelHeight * 0.5
Gus Grubba's avatar
Gus Grubba committed
    property string _pageTitle:         qsTr("%1 Setup").arg(pageName)

Don Gagne's avatar
Don Gagne committed
    QGCPalette { id: qgcPal; colorGroupEnabled: setupPanel.enabled }

    QGCViewPanel {
        id:             setupPanel
        anchors.fill:   parent

        QGCFlickable {
            anchors.fill:   parent
            contentWidth:   pageLoader.x + pageLoader.item.width
            contentHeight:  pageLoader.y + pageLoader.item.height
Don Gagne's avatar
Don Gagne committed
            clip:           true

DonLakeFlyer's avatar
DonLakeFlyer committed
            RowLayout {
                id:                 headingRow
                anchors.left:       parent.left
                anchors.right:      parent.right
Gus Grubba's avatar
Gus Grubba committed
                spacing:            _margins
DonLakeFlyer's avatar
DonLakeFlyer committed
                layoutDirection:    Qt.RightToLeft
DonLakeFlyer's avatar
DonLakeFlyer committed
                QGCCheckBox {
                    id:         advancedCheckBox
                    text:       qsTr("Advanced")
                    visible:    showAdvanced
DonLakeFlyer's avatar
DonLakeFlyer committed
                Column {
                    spacing:            _margins
                    Layout.fillWidth:   true

                    QGCLabel {
                        font.pointSize: ScreenTools.largeFontPointSize
                        text:           !setupView.enabled ? _pageTitle + "<font color=\"red\">" + qsTr(" (Disabled while the vehicle is %1)").arg(_disableReason) + "</font>" : _pageTitle
                        visible:        !ScreenTools.isShortScreen
                    }

                    QGCLabel {
                        anchors.left:   parent.left
                        anchors.right:  parent.right
                        wrapMode:       Text.WordWrap
                        text:           pageDescription
Don Gagne's avatar
 
Don Gagne committed
                        visible:        pageDescription !== "" && !ScreenTools.isShortScreen
DonLakeFlyer's avatar
DonLakeFlyer committed
                    }
Don Gagne's avatar
Don Gagne committed
                }
            }

            Loader {
                id:                 pageLoader
Don Gagne's avatar
Don Gagne committed
                anchors.topMargin:  _margins
DonLakeFlyer's avatar
DonLakeFlyer committed
                anchors.top:        headingRow.bottom
Don Gagne's avatar
Don Gagne committed
            }
Gus Grubba's avatar
Gus Grubba committed
            // Overlay to display when vehicle is armed and this setup page needs
            // to be disabled
            Rectangle {
                visible:            !setupView.enabled
Gus Grubba's avatar
Gus Grubba committed
                anchors.fill:       pageLoader
                color:              "black"
                opacity:            0.5
            }