MainWindow.qml 4.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/*=====================================================================

QGroundControl Open Source Ground Control Station

(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>

This file is part of the QGROUNDCONTROL project

QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.

======================================================================*/

import QtQuick          2.3
import QtQuick.Controls 1.2
import QtPositioning    5.2

import QGroundControl.Controls      1.0
Don Gagne's avatar
Don Gagne committed
29
import QGroundControl.FlightDisplay 1.0
30 31 32
import QGroundControl.ScreenTools   1.0

/// Qml for MainWindow
33
Item {
34
    id: _root
Don Gagne's avatar
Don Gagne committed
35 36

    property var _toolbar: toolbarLoader.item
37 38 39 40 41

    readonly property string _planViewSource:   "MissionEditor.qml"
    readonly property string _setupViewSource:  "SetupView.qml"

    Connections {
42

43 44 45
        target: controller

        onShowFlyView: {
46 47 48 49
            flightView.visible          = true
            setupViewLoader.visible     = false
            planViewLoader.visible      = false
            _root.hideWidgets           = false
50 51 52
        }

        onShowPlanView: {
53 54
            if (planViewLoader.source   != _planViewSource) {
                planViewLoader.source   = _planViewSource
55
            }
56 57 58 59
            flightView.visible          = false
            setupViewLoader.visible     = false
            planViewLoader.visible      = true
            _root.hideWidgets           = true
60 61 62
        }

        onShowSetupView: {
63 64
            if (setupViewLoader.source  != _setupViewSource) {
                setupViewLoader.source  = _setupViewSource
65
            }
66 67 68 69
            flightView.visible          = false
            setupViewLoader.visible     = true
            planViewLoader.visible      = false
            _root.hideWidgets           = true
70 71
        }

Don Gagne's avatar
Don Gagne committed
72
        onShowToolbarMessage: _toolbar.showToolbarMessage(message)
73 74 75 76 77 78

        // The following are use for unit testing only

        onShowSetupFirmware:            setupViewLoader.item.showFirmwarePanel()
        onShowSetupParameters:          setupViewLoader.item.showParametersPanel()
        onShowSetupSummary:             setupViewLoader.item.showSummaryPanel()
Don Gagne's avatar
Don Gagne committed
79
        onShowSetupVehicleComponent:    setupViewLoader.item.showVehicleComponentPanel(vehicleComponent)
80 81
    }

Don Gagne's avatar
Don Gagne committed
82 83 84 85 86
    // We delay load the following control to improve boot time
    Component.onCompleted: {
        toolbarLoader.source = "MainToolBar.qml"
    }

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    // Detect tablet position
    property var tabletPosition: QtPositioning.coordinate(37.803784, -122.462276)
    PositionSource {
        id:             positionSource
        updateInterval: 1000
        active:         ScreenTools.isMobile

        onPositionChanged: {
            tabletPosition = positionSource.position.coordinate
            _root.latitude = tabletPosition.latitude
            _root.longitude = tabletPosition.longitude
            positionSource.active = false
        }
    }

Don Gagne's avatar
Don Gagne committed
102
    Loader {
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
        id:                 toolbarLoader
        width:              parent.width
        height:             item ? item.height : 0
        z:                  _root.zOrderTopMost
    }

    FlightDisplayView {
        id:                 flightView
        anchors.left:       parent.left
        anchors.right:      parent.right
        anchors.top:        toolbarLoader.bottom
        anchors.bottom:     parent.bottom
        visible:            true

        property real zOrder: _root.zOrderTopMost
118 119 120
    }

    Loader {
121 122 123 124 125 126
        id:                 planViewLoader
        anchors.left:       parent.left
        anchors.right:      parent.right
        anchors.top:        toolbarLoader.bottom
        anchors.bottom:     parent.bottom
        visible:            false
127

128 129
        property real zOrder:           _root.zOrderTopMost
        property var tabletPosition:    _root.tabletPosition
130 131 132 133 134 135
    }

    Loader {
        id:                 setupViewLoader
        anchors.left:       parent.left
        anchors.right:      parent.right
Don Gagne's avatar
Don Gagne committed
136
        anchors.top:        toolbarLoader.bottom
137 138 139
        anchors.bottom:     parent.bottom
        visible:            false

140 141
        property real zOrder:           _root.zOrderTopMost
        property var tabletPosition:    _root.tabletPosition
142 143
    }
}