MainToolBar.qml 8.38 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

Don Gagne's avatar
Don Gagne committed
10 11 12
import QtQuick              2.5
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

Don Gagne's avatar
Don Gagne committed
27 28
    property var  _activeVehicle:       QGroundControl.multiVehicleManager.activeVehicle
    property bool isMessageImportant:   _activeVehicle ? !_activeVehicle.messageTypeNormal && !_activeVehicle.messageTypeNone : false
dogmaphobic's avatar
dogmaphobic committed
29
    property bool isBackgroundDark:     true
dogmaphobic's avatar
dogmaphobic committed
30
    property bool opaqueBackground:     false
31

Don Gagne's avatar
Don Gagne committed
32 33 34 35 36 37
    readonly property color colorGreen:     "#05f068"
    readonly property color colorOrange:    "#f0ab06"
    readonly property color colorRed:       "#fc4638"
    readonly property color colorGrey:      "#7f7f7f"
    readonly property color colorBlue:      "#636efe"
    readonly property color colorWhite:     "#ffffff"
38

Don Gagne's avatar
Don Gagne committed
39 40 41 42 43
    signal showSettingsView
    signal showSetupView
    signal showPlanView
    signal showFlyView
    signal showAnalyzeView
Don Gagne's avatar
Don Gagne committed
44

45
    MainToolBarController { id: _controller }
dogmaphobic's avatar
dogmaphobic committed
46

47
    function checkSettingsButton() {
48
        settingsButton.checked = true
49 50
    }

Don Gagne's avatar
Don Gagne committed
51 52 53 54 55 56 57 58 59 60 61 62
    function checkSetupButton() {
        setupButton.checked = true
    }

    function checkPlanButton() {
        planButton.checked = true
    }

    function checkFlyButton() {
        flyButton.checked = true
    }

Don Gagne's avatar
Don Gagne committed
63 64 65 66
    function checkAnalyzeButton() {
        analyzeButton.checked = true
    }

dogmaphobic's avatar
dogmaphobic committed
67 68 69 70
    Component.onCompleted: {
        //-- TODO: Get this from the actual state
        flyButton.checked = true
    }
71

Don Gagne's avatar
Don Gagne committed
72
    /// Bottom single pixel divider
73 74 75 76 77 78
    Rectangle {
        anchors.left:   parent.left
        anchors.right:  parent.right
        anchors.bottom: parent.bottom
        height:         1
        color:          "black"
dogmaphobic's avatar
dogmaphobic committed
79 80 81
        visible:        qgcPal.globalTheme == QGCPalette.Light
    }

Don Gagne's avatar
Don Gagne committed
82
    RowLayout {
83
        anchors.bottomMargin:   1
Don Gagne's avatar
Don Gagne committed
84 85
        anchors.rightMargin:    ScreenTools.defaultFontPixelWidth / 2
        anchors.fill:           parent
Don Gagne's avatar
Don Gagne committed
86
        spacing:                ScreenTools.defaultFontPixelWidth * 2
Don Gagne's avatar
Don Gagne committed
87 88 89 90 91 92 93

        //---------------------------------------------
        // Toolbar Row
        Row {
            id:             viewRow
            anchors.top:    parent.top
            anchors.bottom: parent.bottom
Don Gagne's avatar
Don Gagne committed
94
            spacing:        ScreenTools.defaultFontPixelWidth / 2
Don Gagne's avatar
Don Gagne committed
95 96 97 98 99 100 101 102 103 104 105 106 107

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

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

Don Gagne's avatar
Don Gagne committed
118 119 120 121 122 123 124 125
            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
126

Don Gagne's avatar
Don Gagne committed
127 128 129 130 131 132 133 134
            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
135

Don Gagne's avatar
Don Gagne committed
136 137 138 139 140 141 142 143 144
            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
145 146 147 148 149 150 151 152 153

            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
154
        }
155

Don Gagne's avatar
Don Gagne committed
156 157 158 159 160
        //-------------------------------------------------------------------------
        //-- Vehicle Selector
        QGCButton {
            id:                     vehicleSelectorButton
            width:                  ScreenTools.defaultFontPixelHeight * 8
Don Gagne's avatar
Don Gagne committed
161
            text:                   "Vehicle " + (_activeVehicle ? _activeVehicle.id : "None")
Don Gagne's avatar
Don Gagne committed
162 163
            visible:                QGroundControl.multiVehicleManager.vehicles.count > 1
            anchors.verticalCenter: parent.verticalCenter
Don Gagne's avatar
Don Gagne committed
164

Don Gagne's avatar
Don Gagne committed
165
            menu: vehicleMenu
Don Gagne's avatar
Don Gagne committed
166

Don Gagne's avatar
Don Gagne committed
167 168 169
            Menu {
                id: vehicleMenu
            }
dogmaphobic's avatar
dogmaphobic committed
170

Don Gagne's avatar
Don Gagne committed
171 172
            Component {
                id: vehicleMenuItemComponent
Don Gagne's avatar
Don Gagne committed
173

Don Gagne's avatar
Don Gagne committed
174
                MenuItem {
Don Gagne's avatar
Don Gagne committed
175
                    onTriggered: QGroundControl.multiVehicleManager.activeVehicle = vehicle
Don Gagne's avatar
Don Gagne committed
176 177 178 179 180 181 182

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

            property var vehicleMenuItems: []
183

Don Gagne's avatar
Don Gagne committed
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
            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()
            }
206 207
        }

Don Gagne's avatar
Don Gagne committed
208
        MainToolBarIndicators {
Don Gagne's avatar
Don Gagne committed
209 210 211 212 213
            anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.66
            anchors.top:        parent.top
            anchors.bottom:     parent.bottom
            Layout.fillWidth:   true
            visible:            _activeVehicle
Don Gagne's avatar
Don Gagne committed
214
        }
215 216 217 218 219 220 221 222 223 224

        QGCLabel {
            id:                     waitForVehicle
            anchors.verticalCenter: parent.verticalCenter
            text:                   qsTr("Waiting For Vehicle Connection")
            font.pointSize:         ScreenTools.mediumFontPointSize
            font.family:            ScreenTools.demiboldFontFamily
            color:                  colorRed
            visible:                !_activeVehicle
        }
dogmaphobic's avatar
dogmaphobic committed
225
    }
dogmaphobic's avatar
dogmaphobic committed
226

227 228
    // Progress bar
    Rectangle {
Don Gagne's avatar
Don Gagne committed
229
        id:             progressBar
dogmaphobic's avatar
dogmaphobic committed
230 231
        anchors.bottom: parent.bottom
        height:         toolBar.height * 0.05
Don Gagne's avatar
Don Gagne committed
232
        width:          _activeVehicle ? _activeVehicle.parameterManager.loadProgress * parent.width : 0
dogmaphobic's avatar
dogmaphobic committed
233
        color:          colorGreen
234
    }
dogmaphobic's avatar
dogmaphobic committed
235

236
}