RuleSelector.qml 2.22 KB
Newer Older
Gus Grubba's avatar
Gus Grubba committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import QtQuick                  2.3
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.4
import QtQuick.Dialogs          1.2
import QtQml                    2.2

import QGroundControl                   1.0
import QGroundControl.ScreenTools       1.0
import QGroundControl.Controls          1.0
import QGroundControl.Palette           1.0
import QGroundControl.Airmap            1.0
import QGroundControl.SettingsManager   1.0

Rectangle {
15 16 17 18 19
    id:                         _root
    height:                     ScreenTools.defaultFontPixelHeight
    color:                      _selected ? qgcPal.windowShade : qgcPal.window
    property var    rule:       null
    property bool   checked:    false
20
    property bool   required:   false
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
    property bool   _selected: {
        if (exclusiveGroup) {
            return checked
        } else {
            return rule ? rule.selected : false
        }
    }
    property ExclusiveGroup exclusiveGroup:  null
    onExclusiveGroupChanged: {
        if (exclusiveGroup) {
            checked = rule.selected
            exclusiveGroup.bindCheckable(_root)
        }
    }
    onCheckedChanged: {
        rule.selected = checked
    }
Gus Grubba's avatar
Gus Grubba committed
38 39 40 41 42 43 44 45 46 47 48 49 50
    QGCPalette {
        id: qgcPal
        colorGroupEnabled: enabled
    }
    Row {
        id:             ruleRow
        spacing:        ScreenTools.defaultFontPixelWidth
        anchors.right:  parent.right
        anchors.left:   parent.left
        anchors.verticalCenter: parent.verticalCenter
        Rectangle {
            width:      ScreenTools.defaultFontPixelWidth * 0.75
            height:     ScreenTools.defaultFontPixelHeight
51
            color:      _selected ? qgcPal.colorGreen : qgcPal.window
Gus Grubba's avatar
Gus Grubba committed
52 53 54 55 56 57 58 59 60
            anchors.verticalCenter: parent.verticalCenter
        }
        QGCLabel {
            text:       rule.name === "" ? rule.shortName : rule.name
            font.pointSize: ScreenTools.smallFontPointSize
            anchors.verticalCenter: parent.verticalCenter
        }
    }
    MouseArea {
61 62
        anchors.fill:   parent
        enabled:        !required
Gus Grubba's avatar
Gus Grubba committed
63
        onClicked: {
64 65 66 67 68
            if (exclusiveGroup) {
                checked = true
            } else {
                rule.selected = !rule.selected
            }
Gus Grubba's avatar
Gus Grubba committed
69 70 71
        }
    }
}