MainWindow.qml 4.47 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
/*=====================================================================

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

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

/// Qml for MainWindow
34
Item {
dogmaphobic's avatar
dogmaphobic committed
35
    id: mainWindow
Don Gagne's avatar
Don Gagne committed
36 37

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

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

    Connections {
43

44 45 46
        target: controller

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

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

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

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

        // 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
77
        onShowSetupVehicleComponent:    setupViewLoader.item.showVehicleComponentPanel(vehicleComponent)
78 79
    }

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

85 86 87 88 89 90 91 92 93
    // 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
94 95
            flightView.latitude = tabletPosition.latitude
            flightView.longitude = tabletPosition.longitude
96 97 98 99
            positionSource.active = false
        }
    }

Don Gagne's avatar
Don Gagne committed
100
    Loader {
101 102 103
        id:                 toolbarLoader
        width:              parent.width
        height:             item ? item.height : 0
Gus Grubba's avatar
Gus Grubba committed
104
        z:                  QGroundControl.zOrderTopMost
105 106 107 108 109 110 111 112 113
    }

    FlightDisplayView {
        id:                 flightView
        anchors.left:       parent.left
        anchors.right:      parent.right
        anchors.top:        toolbarLoader.bottom
        anchors.bottom:     parent.bottom
        visible:            true
114 115 116
    }

    Loader {
117 118 119 120 121 122
        id:                 planViewLoader
        anchors.left:       parent.left
        anchors.right:      parent.right
        anchors.top:        toolbarLoader.bottom
        anchors.bottom:     parent.bottom
        visible:            false
123

dogmaphobic's avatar
dogmaphobic committed
124
        property var tabletPosition:    mainWindow.tabletPosition
125 126 127 128 129 130
    }

    Loader {
        id:                 setupViewLoader
        anchors.left:       parent.left
        anchors.right:      parent.right
Don Gagne's avatar
Don Gagne committed
131
        anchors.top:        toolbarLoader.bottom
132 133 134
        anchors.bottom:     parent.bottom
        visible:            false

dogmaphobic's avatar
dogmaphobic committed
135
        property var tabletPosition:    mainWindow.tabletPosition
136 137
    }
}