QGCInstrumentWidget.qml 5.45 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


/**
 * @file
dogmaphobic's avatar
dogmaphobic committed
13
 *   @brief QGC Fly View Widgets
dogmaphobic's avatar
dogmaphobic committed
14 15 16 17 18
 *   @author Gus Grubba <mavlink@grubba.com>
 */

import QtQuick 2.4

19
import QGroundControl               1.0
Don Gagne's avatar
Don Gagne committed
20 21 22
import QGroundControl.Controls      1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.FactSystem    1.0
23
import QGroundControl.FlightMap     1.0
24
import QGroundControl.Palette       1.0
dogmaphobic's avatar
dogmaphobic committed
25

Don Gagne's avatar
Don Gagne committed
26
Item {
27
    id:     instrumentPanel
Don Gagne's avatar
Don Gagne committed
28
    height: instrumentColumn.y + instrumentColumn.height + _topBottomMargin
29
    width:  size
dogmaphobic's avatar
dogmaphobic committed
30

31
    property alias  heading:        compass.heading
Don Gagne's avatar
Don Gagne committed
32 33
    property alias  rollAngle:      attitudeWidget.rollAngle
    property alias  pitchAngle:     attitudeWidget.pitchAngle
dogmaphobic's avatar
dogmaphobic committed
34
    property real   size:           _defaultSize
35
    property bool   lightBorders:   true
36
    property bool   active:         false
37 38
    property var    qgcView
    property real   maxHeight
39

Don Gagne's avatar
Don Gagne committed
40 41 42 43
    property Fact   _emptyFact:         Fact { }
    property Fact   groundSpeedFact:    _emptyFact
    property Fact   airSpeedFact:       _emptyFact

44
    property real   _defaultSize:   ScreenTools.defaultFontPixelHeight * (9)
dogmaphobic's avatar
dogmaphobic committed
45

46
    property color  _backgroundColor:   qgcPal.window
47
    property real   _spacing:           ScreenTools.defaultFontPixelHeight * 0.33
48
    property real   _topBottomMargin:   (size * 0.05) / 2
Don Gagne's avatar
Don Gagne committed
49 50 51
    property real   _availableValueHeight: maxHeight - (attitudeWidget.height + _spacer1.height + _spacer2.height + (_spacing * 4)) - (_showCompass ? compass.height : 0)
    property var    _activeVehicle:     QGroundControl.multiVehicleManager.activeVehicle

52
    readonly property bool _showCompass:    true // !ScreenTools.isShortScreen
Don Gagne's avatar
Don Gagne committed
53

54 55
    QGCPalette { id: qgcPal }

Don Gagne's avatar
Don Gagne committed
56 57 58 59 60 61
    Rectangle {
        anchors.left:   parent.left
        anchors.right:  parent.right
        height:         (_showCompass ? instrumentColumn.height : attitudeWidget.height) + (_topBottomMargin * 2)
        radius:         size / 2
        color:          _backgroundColor
62 63
        border.width:   1
        border.color:   lightBorders ? qgcPal.mapWidgetBorderLight : qgcPal.mapWidgetBorderDark
Don Gagne's avatar
Don Gagne committed
64
    }
65 66 67 68 69 70

    MouseArea {
        anchors.fill: parent
        onClicked: _valuesWidget.showPicker()
    }

Don Gagne's avatar
Don Gagne committed
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
    Column {
        id:                 instrumentColumn
        anchors.topMargin:  _topBottomMargin
        anchors.top:        parent.top
        anchors.left:       parent.left
        anchors.right:      parent.right
        spacing:            _spacing

        Item {
            width:  parent.width
            height: attitudeWidget.height

            QGCAttitudeWidget {
                id:             attitudeWidget
                size:           parent.width * 0.95
                active:         instrumentPanel.active
                anchors.horizontalCenter: parent.horizontalCenter
            }

            Image {
                id:                 gearThingy
                anchors.bottom:     attitudeWidget.bottom
                anchors.right:      attitudeWidget.right
dogmaphobic's avatar
dogmaphobic committed
94
                source:             qgcPal.globalTheme == QGCPalette.Light ? "/res/gear-black.svg" : "/res/gear-white.svg"
Don Gagne's avatar
Don Gagne committed
95 96 97
                mipmap:             true
                opacity:            0.5
                width:              attitudeWidget.width * 0.15
dogmaphobic's avatar
dogmaphobic committed
98
                sourceSize.width:   width
Don Gagne's avatar
Don Gagne committed
99 100 101 102 103 104 105 106 107
                fillMode:           Image.PreserveAspectFit
                MouseArea {
                    anchors.fill:   parent
                    hoverEnabled:   true
                    onEntered:      gearThingy.opacity = 0.85
                    onExited:       gearThingy.opacity = 0.5
                    onClicked:      _valuesWidget.showPicker()
                }
            }
108
        }
109

Don Gagne's avatar
Don Gagne committed
110 111 112 113
        Rectangle {
            id:                 _spacer1
            height:             1
            width:              parent.width * 0.9
114
            color:              qgcPal.text
Don Gagne's avatar
Don Gagne committed
115 116
            anchors.horizontalCenter: parent.horizontalCenter
        }
117

Don Gagne's avatar
Don Gagne committed
118 119 120 121 122 123 124
        Item {
            width:  parent.width
            height: _valuesWidget.height

            Rectangle {
                anchors.fill:   _valuesWidget
                color:          _backgroundColor
Don Gagne's avatar
Don Gagne committed
125
                visible:        !_showCompass
Don Gagne's avatar
Don Gagne committed
126 127 128 129 130 131 132
                radius:         _spacing
            }

            InstrumentSwipeView {
                id:                 _valuesWidget
                width:              parent.width
                qgcView:            instrumentPanel.qgcView
133
                textColor:          qgcPal.text
Don Gagne's avatar
Don Gagne committed
134 135 136 137
                backgroundColor:    _backgroundColor
                maxHeight:          _availableValueHeight
            }
        }
138

139
        Rectangle {
Don Gagne's avatar
Don Gagne committed
140 141 142
            id:                 _spacer2
            height:             1
            width:              parent.width * 0.9
143
            color:              qgcPal.text
Don Gagne's avatar
Don Gagne committed
144 145
            visible:            _showCompass
            anchors.horizontalCenter: parent.horizontalCenter
146 147
        }

Don Gagne's avatar
Don Gagne committed
148 149 150 151 152 153 154
        QGCCompassWidget {
            id:                 compass
            size:               parent.width * 0.95
            active:             instrumentPanel.active
            visible:            _showCompass
            anchors.horizontalCenter: parent.horizontalCenter
        }
155
    }
dogmaphobic's avatar
dogmaphobic committed
156
}