VibrationWidget.qml 6.46 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
/*=====================================================================

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.4
import QtQuick.Controls 1.4

import QGroundControl.Controls      1.0
import QGroundControl.ScreenTools   1.0
import QGroundControl.FactSystem    1.0
import QGroundControl.Controllers   1.0
import QGroundControl.Palette       1.0
import QGroundControl               1.0

QGCFlickable {
    id:                 _root
    height:             Math.min(maxHeight, innerItem.height)
    contentHeight:      innerItem.height
    flickableDirection: Flickable.VerticalFlick
    clip:               true

    property color  textColor
    property color  backgroundColor
    property var    maxHeight

Don Gagne's avatar
Don Gagne committed
45
    property var    _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.disconnectedVehicle
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
    property real   _margins:       ScreenTools.defaultFontPixelWidth / 2
    property real   _barWidth:      Math.round(ScreenTools.defaultFontPixelWidth * 3)

    readonly property real _barMinimum:     0.0
    readonly property real _barMaximum:     90.0
    readonly property real _barBadValue:    60.0

    QGCPalette { id:qgcPal; colorGroupEnabled: true }

    Item {
        id:     innerItem
        width:  parent.width
        height: barRow.y + barRow.height

        QGCLabel {
            id:     title
            color:  textColor
63
            text:   qsTr("Vibe")
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
            anchors.horizontalCenter: barRow.horizontalCenter
        }

        Row {
            id:                 barRow
            anchors.margins:    _margins
            anchors.top:        title.bottom
            anchors.left:       parent.left
            spacing:            _margins

            Column {
                ProgressBar {
                    id:             xBar
                    height:         50
                    orientation:    Qt.Vertical
                    minimumValue:   _barMinimum
                    maximumValue:   _barMaximum
                    value:          _activeVehicle ? _activeVehicle.vibration.xAxis.value : 0
                }

                QGCLabel {
                    id:     xBarLabel
                    color:  textColor
87
                    text:   "X"
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
                    anchors.horizontalCenter: xBar.horizontalCenter
                }
            }

            Column {
                ProgressBar {
                    id:             yBar
                    height:         50
                    orientation:    Qt.Vertical
                    minimumValue:   _barMinimum
                    maximumValue:   _barMaximum
                    value:          _activeVehicle ? _activeVehicle.vibration.yAxis.value : 0
                }

                QGCLabel {
                    anchors.horizontalCenter: yBar.horizontalCenter
                    color:  textColor
105
                    text:   "Y"
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
                }
            }

            Column {
                ProgressBar {
                    id:             zBar
                    height:         50
                    orientation:    Qt.Vertical
                    minimumValue:   _barMinimum
                    maximumValue:   _barMaximum
                    value:          _activeVehicle ? _activeVehicle.vibration.zAxis.value : 0
                }

                QGCLabel {
                    anchors.horizontalCenter: zBar.horizontalCenter
                    color:  textColor
122
                    text:   "Z"
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
                }
            }
        } // Row

        // Max vibe indication line at 60
        Rectangle {
            anchors.topMargin:      xBar.height * (1.0 - ((_barBadValue - _barMinimum) / (_barMaximum - _barMinimum)))
            anchors.top:            barRow.top
            anchors.left:           barRow.left
            anchors.right:          barRow.right
            width:                  barRow.width
            height:                 1
            color:                  "red"
        }

        QGCLabel {
            id:                 clipLabel
            anchors.margins:    _margins
            anchors.left:       barRow.right
            anchors.right:      parent.right
            color:              textColor
144
            text:               qsTr("Clip count")
145 146 147 148 149 150 151 152 153
            horizontalAlignment: Text.AlignHCenter
        }

        Column {
            id:             clipColumn
            anchors.top:    barRow.top
            anchors.horizontalCenter: clipLabel.horizontalCenter

            QGCLabel {
154
                text: qsTr("Accel 1: ") + (_activeVehicle ? _activeVehicle.vibration.clipCount1.valueString : "")
155 156 157 158
                color: textColor
            }

            QGCLabel {
159
                text: qsTr("Accel 2: ") + (_activeVehicle ? _activeVehicle.vibration.clipCount2.valueString : "")
160 161 162 163
                color: textColor
            }

            QGCLabel {
164
                text: qsTr("Accel 2: ") + (_activeVehicle ? _activeVehicle.vibration.clipCount3.valueString : "")
165 166 167 168 169 170 171 172 173 174 175 176 177
                color: textColor
            }
        }

        // Not available overlay
        Rectangle {
            anchors.fill:   parent
            color:          backgroundColor
            opacity:        0.95
            visible:        _activeVehicle ? isNaN(_activeVehicle.vibration.xAxis.value) : false

            QGCLabel {
                anchors.fill:   parent
178
                text:           qsTr("Not Available")
179 180 181 182 183 184 185
                color:          textColor
                horizontalAlignment:    Text.AlignHCenter
                verticalAlignment:      Text.AlignVCenter
            }
        }
    } // Item
} // QGCFLickable