MainToolBar.qml 7.32 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)
dogmaphobic's avatar
dogmaphobic committed
24

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

27
    property var  _activeVehicle:  QGroundControl.multiVehicleManager.activeVehicle
28

Don Gagne's avatar
Don Gagne committed
29 30 31 32 33
    signal showSettingsView
    signal showSetupView
    signal showPlanView
    signal showFlyView
    signal showAnalyzeView
Don Gagne's avatar
Don Gagne committed
34

35
    function checkSettingsButton() {
36
        settingsButton.checked = true
37 38
    }

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

    function checkPlanButton() {
        planButton.checked = true
    }

    function checkFlyButton() {
        flyButton.checked = true
    }

Don Gagne's avatar
Don Gagne committed
51 52 53 54
    function checkAnalyzeButton() {
        analyzeButton.checked = true
    }

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

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

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

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

            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
            }
96

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

Don Gagne's avatar
Don Gagne committed
106 107 108 109 110 111 112 113
            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
114

Don Gagne's avatar
Don Gagne committed
115 116 117 118 119 120 121 122
            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
123

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

            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
142
        }
143

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

Don Gagne's avatar
Don Gagne committed
153
            menu: vehicleMenu
Don Gagne's avatar
Don Gagne committed
154

Don Gagne's avatar
Don Gagne committed
155 156 157
            Menu {
                id: vehicleMenu
            }
dogmaphobic's avatar
dogmaphobic committed
158

Don Gagne's avatar
Don Gagne committed
159 160
            Component {
                id: vehicleMenuItemComponent
Don Gagne's avatar
Don Gagne committed
161

Don Gagne's avatar
Don Gagne committed
162
                MenuItem {
Don Gagne's avatar
Don Gagne committed
163
                    onTriggered: QGroundControl.multiVehicleManager.activeVehicle = vehicle
Don Gagne's avatar
Don Gagne committed
164 165 166 167 168 169 170

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

            property var vehicleMenuItems: []
171

Don Gagne's avatar
Don Gagne committed
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
            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()
            }
194 195
        }

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

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

213
}