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

10 11 12
import QtQuick              2.3
import QtQuick.Layouts      1.2
import QtQuick.Controls     1.2
dogmaphobic's avatar
dogmaphobic committed
13

Don Gagne's avatar
Don Gagne committed
14
import QGroundControl                       1.0
15 16 17 18
import QGroundControl.Controls              1.0
import QGroundControl.Palette               1.0
import QGroundControl.MultiVehicleManager   1.0
import QGroundControl.ScreenTools           1.0
19
import QGroundControl.Controllers           1.0
dogmaphobic's avatar
dogmaphobic committed
20

21
Rectangle {
22
    id:         toolBar
23
    color:      qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.8) : Qt.rgba(0,0,0,0.75)
24
    visible:    !QGroundControl.videoManager.fullScreen
dogmaphobic's avatar
dogmaphobic committed
25

Don Gagne's avatar
Don Gagne committed
26
    QGCPalette { id: qgcPal; colorGroupEnabled: true }
27

28
    property var  _activeVehicle:  QGroundControl.multiVehicleManager.activeVehicle
29

Don Gagne's avatar
Don Gagne committed
30 31 32 33 34
    signal showSettingsView
    signal showSetupView
    signal showPlanView
    signal showFlyView
    signal showAnalyzeView
35 36
    signal armVehicle
    signal disarmVehicle
Don Gagne's avatar
Don Gagne committed
37

38
    function checkSettingsButton() {
39
        settingsButton.checked = true
40 41
    }

Don Gagne's avatar
Don Gagne committed
42 43 44 45 46 47 48 49 50 51 52 53
    function checkSetupButton() {
        setupButton.checked = true
    }

    function checkPlanButton() {
        planButton.checked = true
    }

    function checkFlyButton() {
        flyButton.checked = true
    }

Don Gagne's avatar
Don Gagne committed
54 55 56 57
    function checkAnalyzeButton() {
        analyzeButton.checked = true
    }

dogmaphobic's avatar
dogmaphobic committed
58 59 60 61
    Component.onCompleted: {
        //-- TODO: Get this from the actual state
        flyButton.checked = true
    }
62

Don Gagne's avatar
Don Gagne committed
63
    /// Bottom single pixel divider
64 65 66 67 68 69
    Rectangle {
        anchors.left:   parent.left
        anchors.right:  parent.right
        anchors.bottom: parent.bottom
        height:         1
        color:          "black"
70
        visible:        qgcPal.globalTheme === QGCPalette.Light
dogmaphobic's avatar
dogmaphobic committed
71 72
    }

Don Gagne's avatar
Don Gagne committed
73
    RowLayout {
74
        anchors.bottomMargin:   1
Don Gagne's avatar
Don Gagne committed
75 76
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth / 2
        anchors.fill:           parent
Don Gagne's avatar
Don Gagne committed
77
        spacing:                ScreenTools.defaultFontPixelWidth * 2
Don Gagne's avatar
Don Gagne committed
78 79 80 81 82 83 84

        //---------------------------------------------
        // Toolbar Row
        Row {
            id:             viewRow
            anchors.top:    parent.top
            anchors.bottom: parent.bottom
Don Gagne's avatar
Don Gagne committed
85
            spacing:        ScreenTools.defaultFontPixelWidth / 2
Don Gagne's avatar
Don Gagne committed
86 87 88 89 90 91 92 93 94 95 96 97 98

            ExclusiveGroup { id: mainActionGroup }

            QGCToolBarButton {
                id:                 settingsButton
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                exclusiveGroup:     mainActionGroup
                source:             "/res/QGCLogoWhite"
                logo:               true
                onClicked:          toolBar.showSettingsView()
                visible:            !QGroundControl.corePlugin.options.combineSettingsAndSetup
            }
99

Don Gagne's avatar
Don Gagne committed
100 101 102 103 104 105 106 107
            QGCToolBarButton {
                id:                 setupButton
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                exclusiveGroup:     mainActionGroup
                source:             "/qmlimages/Gears.svg"
                onClicked:          toolBar.showSetupView()
            }
108

Don Gagne's avatar
Don Gagne committed
109 110 111 112 113 114 115 116
            QGCToolBarButton {
                id:                 planButton
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                exclusiveGroup:     mainActionGroup
                source:             "/qmlimages/Plan.svg"
                onClicked:          toolBar.showPlanView()
            }
Don Gagne's avatar
Don Gagne committed
117

Don Gagne's avatar
Don Gagne committed
118 119 120 121 122 123 124 125
            QGCToolBarButton {
                id:                 flyButton
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                exclusiveGroup:     mainActionGroup
                source:             "/qmlimages/PaperPlane.svg"
                onClicked:          toolBar.showFlyView()
            }
Don Gagne's avatar
Don Gagne committed
126

Don Gagne's avatar
Don Gagne committed
127 128 129 130 131 132
            QGCToolBarButton {
                id:                 analyzeButton
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                exclusiveGroup:     mainActionGroup
                source:             "/qmlimages/Analyze.svg"
133
                visible:            !ScreenTools.isMobile && QGroundControl.corePlugin.showAdvancedUI
Don Gagne's avatar
Don Gagne committed
134 135
                onClicked:          toolBar.showAnalyzeView()
            }
Don Gagne's avatar
Don Gagne committed
136 137 138 139 140 141 142 143 144

            Rectangle {
                anchors.margins:    ScreenTools.defaultFontPixelHeight / 2
                anchors.top:        parent.top
                anchors.bottom:     parent.bottom
                width:              1
                color:              qgcPal.text
                visible:            _activeVehicle
            }
Don Gagne's avatar
Don Gagne committed
145
        }
146

Don Gagne's avatar
Don Gagne committed
147 148 149 150 151
        //-------------------------------------------------------------------------
        //-- Vehicle Selector
        QGCButton {
            id:                     vehicleSelectorButton
            width:                  ScreenTools.defaultFontPixelHeight * 8
Don Gagne's avatar
Don Gagne committed
152
            text:                   "Vehicle " + (_activeVehicle ? _activeVehicle.id : "None")
Don Gagne's avatar
Don Gagne committed
153 154
            visible:                QGroundControl.multiVehicleManager.vehicles.count > 1
            anchors.verticalCenter: parent.verticalCenter
Don Gagne's avatar
Don Gagne committed
155

Don Gagne's avatar
Don Gagne committed
156
            menu: vehicleMenu
Don Gagne's avatar
Don Gagne committed
157

Don Gagne's avatar
Don Gagne committed
158 159 160
            Menu {
                id: vehicleMenu
            }
dogmaphobic's avatar
dogmaphobic committed
161

Don Gagne's avatar
Don Gagne committed
162 163
            Component {
                id: vehicleMenuItemComponent
Don Gagne's avatar
Don Gagne committed
164

Don Gagne's avatar
Don Gagne committed
165
                MenuItem {
Don Gagne's avatar
Don Gagne committed
166
                    onTriggered: QGroundControl.multiVehicleManager.activeVehicle = vehicle
Don Gagne's avatar
Don Gagne committed
167 168 169 170 171 172 173

                    property int vehicleId: Number(text.split(" ")[1])
                    property var vehicle:   QGroundControl.multiVehicleManager.getVehicleById(vehicleId)
                }
            }

            property var vehicleMenuItems: []
174

Don Gagne's avatar
Don Gagne committed
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
            function updateVehicleMenu() {
                // Remove old menu items
                for (var i = 0; i < vehicleMenuItems.length; i++) {
                    vehicleMenu.removeItem(vehicleMenuItems[i])
                }
                vehicleMenuItems.length = 0

                // Add new items
                for (var i=0; i<QGroundControl.multiVehicleManager.vehicles.count; i++) {
                    var vehicle = QGroundControl.multiVehicleManager.vehicles.get(i)
                    var menuItem = vehicleMenuItemComponent.createObject(null, { "text": "Vehicle " + vehicle.id })
                    vehicleMenuItems.push(menuItem)
                    vehicleMenu.insertItem(i, menuItem)
                }
            }

            Component.onCompleted: updateVehicleMenu()

            Connections {
                target:         QGroundControl.multiVehicleManager.vehicles
                onCountChanged: vehicleSelectorButton.updateVehicleMenu()
            }
197 198
        }

Don Gagne's avatar
Don Gagne committed
199
        MainToolBarIndicators {
Don Gagne's avatar
Don Gagne committed
200 201 202 203
            anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.66
            anchors.top:        parent.top
            anchors.bottom:     parent.bottom
            Layout.fillWidth:   true
204
        }
dogmaphobic's avatar
dogmaphobic committed
205
    }
dogmaphobic's avatar
dogmaphobic committed
206

207 208
    // Progress bar
    Rectangle {
Don Gagne's avatar
Don Gagne committed
209
        id:             progressBar
dogmaphobic's avatar
dogmaphobic committed
210 211
        anchors.bottom: parent.bottom
        height:         toolBar.height * 0.05
Don Gagne's avatar
Don Gagne committed
212
        width:          _activeVehicle ? _activeVehicle.parameterManager.loadProgress * parent.width : 0
213
        color:          qgcPal.colorGreen
214
    }
215
}