QGCCheckListItem.qml 3.28 KB
Newer Older
1 2 3 4 5 6 7 8 9
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.4

import QGroundControl 1.0
import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0

QGCButton {
10 11 12 13 14 15 16 17 18
    property string name:           ""
    property int    group:          0
    property string defaulttext:    "Not checked yet"
    property string pendingtext:    ""
    property string failuretext:    "Failure. Check console."
    property int    _state:         0
    property var    _color:         qgcPal.button
    property int    _nrClicked:     0
    property string _text:          qsTr(name)+ ": " + qsTr(defaulttext)
19

20 21 22
    enabled : (_activeVehicle==null || _activeVehicle.connectionLost) ? false : checklist._checkState>=group
    opacity : (_activeVehicle==null || _activeVehicle.connectionLost) ? 0.4 : 0.2+0.8*(checklist._checkState >= group);
    width: 40*ScreenTools.defaultFontPixelWidth
23 24 25 26 27 28 29 30 31 32
    style: ButtonStyle {
        background: Rectangle {color:_color; border.color: qgcPal.button; radius:3}
        label: Label {
            text: _text
            wrapMode: Text.WordWrap
            horizontalAlignment: Text.AlignHCenter
            color: _state>0 ? qgcPal.mapWidgetBorderLight : qgcPal.buttonText
        }
    }

33 34 35 36
    // Connections
    onPendingtextChanged: { if(_state==1) {getTextFromState(); getColorFromState();} }
    onFailuretextChanged: { if(_state==3) {getTextFromState(); getColorFromState();} }
    on_StateChanged: { getTextFromState(); getColorFromState(); }
37 38 39 40 41
    onClicked: {
        if(_state<2) _nrClicked=_nrClicked+1; //Only allow click-counter to increase when not failed yet
        updateItem();
    }

42
    //Functions
43 44 45 46
    function updateItem() {
        // This is the default updateFunction. It assumes the item is a MANUAL check list item, i.e. one that
        // only requires user clicks (one click if pendingtext="", two clicks otherwise) for completion.

47 48
        if(_nrClicked===0) _state = 0;
        else if(_nrClicked===1) {
49 50
            if(pendingtext.length === 0) _state = 4;
            else _state = 1;
51
        } else _state = 4;
52 53 54 55 56

        getTextFromState();
        getColorFromState();
    }
    function getTextFromState() {
57 58 59 60
        if(_state === 0) {_text= qsTr(name) + ": " + qsTr(defaulttext)}                         // Not checked yet
        else if(_state === 1) {_text= "<b>"+qsTr(name)+"</b>" +": " + qsTr(pendingtext)}        // Pending
        else if(_state === 2) {_text= "<b>"+qsTr(name)+"</b>" +": " + qsTr("Minor problem")}    // Small problem or need further user action to resolve
        else if(_state === 3) {_text= "<b>"+qsTr(name)+"</b>" +": " + qsTr(failuretext)}        // Big problem
61 62 63
        else {_text= "<b>"+qsTr(name)+"</b>" +": " + qsTr("OK")}                                // All OK
    }
    function getColorFromState() {
64
        if(_state === 0) {_color=qgcPal.button}                     // Not checked yet
65 66 67 68 69
        else if(_state === 1) {_color=Qt.rgba(0.9,0.47,0.2,1)}      // Pending
        else if(_state === 2) {_color=Qt.rgba(1.0,0.6,0.2,1)}       // Small problem or need further user action to resolve
        else if(_state === 3) {_color=Qt.rgba(0.92,0.22,0.22,1)}    // Big problem
        else {_color=Qt.rgba(0.27,0.67,0.42,1)}                     // All OK
    }
70 71 72 73
    function resetNrClicks() {
        _nrClicked=0;
        updateItem();
    }
74
}