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 {
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)
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
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
}
}
// Connections
onPendingtextChanged: { if(_state==1) {getTextFromState(); getColorFromState();} }
onFailuretextChanged: { if(_state==3) {getTextFromState(); getColorFromState();} }
on_StateChanged: { getTextFromState(); getColorFromState(); }
onClicked: {
if(_state<2) _nrClicked=_nrClicked+1; //Only allow click-counter to increase when not failed yet
updateItem();
}
//Functions
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.
if(_nrClicked===0) _state = 0;
else if(_nrClicked===1) {
if(pendingtext.length === 0) _state = 4;
else _state = 1;
} else _state = 4;
getTextFromState();
getColorFromState();
}
function getTextFromState() {
if(_state === 0) {_text= qsTr(name) + ": " + qsTr(defaulttext)} // Not checked yet
else if(_state === 1) {_text= ""+qsTr(name)+"" +": " + qsTr(pendingtext)} // Pending
else if(_state === 2) {_text= ""+qsTr(name)+"" +": " + qsTr("Minor problem")} // Small problem or need further user action to resolve
else if(_state === 3) {_text= ""+qsTr(name)+"" +": " + qsTr(failuretext)} // Big problem
else {_text= ""+qsTr(name)+"" +": " + qsTr("OK")} // All OK
}
function getColorFromState() {
if(_state === 0) {_color=qgcPal.button} // Not checked yet
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
}
function resetNrClicks() {
_nrClicked=0;
updateItem();
}
}