SetupPage.qml 4.55 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2 3 4 5 6 7 8 9
/****************************************************************************
 *
 *   (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.
 *
 ****************************************************************************/

10 11
import QtQuick          2.3
import QtQuick.Controls 1.2
Don Gagne's avatar
Don Gagne committed
12
import QtQuick.Dialogs  1.2
DonLakeFlyer's avatar
DonLakeFlyer committed
13
import QtQuick.Layouts  1.2
Don Gagne's avatar
Don Gagne committed
14 15 16 17 18 19 20 21 22 23 24

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
25 26
    id:             setupView
    viewPanel:      setupPanel
27
    enabled:        !_disableDueToArmed && !_disableDueToFlying
Don Gagne's avatar
Don Gagne committed
28

29
    property alias  pageComponent:      pageLoader.sourceComponent
30 31
    property string pageName:           vehicleComponent ? vehicleComponent.name : ""
    property string pageDescription:    vehicleComponent ? vehicleComponent.description : ""
32 33
    property real   availableWidth:     width - pageLoader.x
    property real   availableHeight:    height - pageLoader.y
DonLakeFlyer's avatar
DonLakeFlyer committed
34 35
    property bool   showAdvanced:       false
    property alias  advanced:           advancedCheckBox.checked
Don Gagne's avatar
Don Gagne committed
36

37
    property var    _activeVehicle:         QGroundControl.multiVehicleManager.activeVehicle
38
    property bool   _vehicleIsRover:        _activeVehicle ? _activeVehicle.rover : false
39 40 41
    property bool   _vehicleArmed:          _activeVehicle ? _activeVehicle.armed : false
    property bool   _vehicleFlying:         _activeVehicle ? _activeVehicle.flying : false
    property bool   _disableDueToArmed:     vehicleComponent ? (!vehicleComponent.allowSetupWhileArmed && _vehicleArmed) : false
42
    // FIXME: The _vehicleIsRover checkl is a hack to work around https://github.com/PX4/Firmware/issues/10969
Don Gagne's avatar
Don Gagne committed
43
    property bool   _disableDueToFlying:    vehicleComponent ? (!_vehicleIsRover && !vehicleComponent.allowSetupWhileFlying && _vehicleFlying) : false
44
    property string _disableReason:         _disableDueToArmed ? qsTr("armed") : qsTr("flying")
Don Gagne's avatar
Don Gagne committed
45

Gus Grubba's avatar
Gus Grubba committed
46
    property real _margins:             ScreenTools.defaultFontPixelHeight * 0.5
Gus Grubba's avatar
Gus Grubba committed
47 48
    property string _pageTitle:         qsTr("%1 Setup").arg(pageName)

Don Gagne's avatar
Don Gagne committed
49 50 51 52 53 54 55 56
    QGCPalette { id: qgcPal; colorGroupEnabled: setupPanel.enabled }

    QGCViewPanel {
        id:             setupPanel
        anchors.fill:   parent

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

DonLakeFlyer's avatar
DonLakeFlyer committed
61 62 63 64
            RowLayout {
                id:                 headingRow
                anchors.left:       parent.left
                anchors.right:      parent.right
Gus Grubba's avatar
Gus Grubba committed
65
                spacing:            _margins
DonLakeFlyer's avatar
DonLakeFlyer committed
66
                layoutDirection:    Qt.RightToLeft
Don Gagne's avatar
Don Gagne committed
67

DonLakeFlyer's avatar
DonLakeFlyer committed
68 69 70 71
                QGCCheckBox {
                    id:         advancedCheckBox
                    text:       qsTr("Advanced")
                    visible:    showAdvanced
Don Gagne's avatar
Don Gagne committed
72 73
                }

DonLakeFlyer's avatar
DonLakeFlyer committed
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
                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
                        visible:        !ScreenTools.isShortScreen
                    }
Don Gagne's avatar
Don Gagne committed
91 92 93 94
                }
            }

            Loader {
95
                id:                 pageLoader
Don Gagne's avatar
Don Gagne committed
96
                anchors.topMargin:  _margins
DonLakeFlyer's avatar
DonLakeFlyer committed
97
                anchors.top:        headingRow.bottom
Don Gagne's avatar
Don Gagne committed
98
            }
DonLakeFlyer's avatar
DonLakeFlyer committed
99

Gus Grubba's avatar
Gus Grubba committed
100 101 102
            // Overlay to display when vehicle is armed and this setup page needs
            // to be disabled
            Rectangle {
103
                visible:            !setupView.enabled
Gus Grubba's avatar
Gus Grubba committed
104 105 106 107
                anchors.fill:       pageLoader
                color:              "black"
                opacity:            0.5
            }
Don Gagne's avatar
Don Gagne committed
108 109 110
        }
    }
}