import QtQuick 2.3
import QtQuick.Layouts 1.1
Core {
id: container
/*
* Kontrolka umożliwiająca zmianę parametru (wartości) ON/OFF w formie przycisku.
*/
/*
* Property do ustawienia przy tworzeniu
*/
property string prop_title: "" // nagłówek parametru
property int prop_index : -1 // index parametru setting
property string prop_p_0 : "0;1" // parametry rozdzielone średnikiem, oznaczenie w/g kolejności jak niżej
/*
* Property prywatne definiowane z prop_p_0
*/
property int prv_value_off : 0 // 1 - wartość off
property int prv_value_on : 1 // 2 - wartośc on
/*
* Property prywatne pozostałe
*/
property int prv_value: -1 // aktualna wyświetlana wartość (0 lub 1)
property int prv_setting_value: 0 // aktualne wartość setting
property int prv_counter_value: 0 // aktualne wartość counter
property int prv_initialized : 0 // kontrolka została zainicjalizowana
Layout.fillWidth: true
Layout.minimumWidth: 150
Layout.maximumWidth: 600
Layout.fillHeight: true
Layout.minimumHeight: 100
Layout.maximumHeight: 250
Layout.alignment: Qt.AlignHCenter
width: 300
height: 100
color: "#00000000"
property color buttonColor: "#e9e9e9"
property color borderColor: "#b8b8b8"
property color onHoverColor: "#989898"
signal valueChanged(int a_index, int a_value)
signal buttonClick()
// sygnal od rodzica (zmieniono wartość)
function setValue(a_index, a_setting_value, a_counter_value, a_na1, a_na2) {
if (container != null) {
if (a_index === prop_index) {
prv_setting_value = a_setting_value;
prv_counter_value = a_counter_value;
myValueUpdated();
}
}
}
function myValueUpdated() {
if (prv_setting_value !== 65535) {
if (prv_setting_value == prv_value_on) {
prv_value = 1;
} else {
prv_value = 0;
}
} else {
if (prv_counter_value == prv_value_on) {
prv_value = 1;
} else {
prv_value = 0;
}
}
}
Component.onCompleted: {
if (!prv_initialized) {
valueChanged.connect(updateValue);
commitValue.connect(setValue);
var tmp_value = prop_p_0.split(";");
prv_value_off = tmp_value[0];
prv_value_on = tmp_value[1];
prv_initialized = 1;
}
}
onButtonClick: {
if (prv_value) {
valueChanged(prop_index, prv_value_off);
prv_value = 0;
} else {
valueChanged(prop_index, prv_value_on);
prv_value = 1;
}
}
Item {
id: itm_button
x: 10
y: 10
width: parent.width - 2 * x
height: parent.height - 2 * y
Rectangle{
id: rec_button
anchors.fill: parent
radius: 10
border.width: 2
border.color: borderColor
//color: "#e9e9e9"
color: prv_value ? Qt.lighter(buttonColor, 1.5) : buttonColor
Behavior on color { ColorAnimation{ duration: 55 } }
scale: prv_value ? 0.9 : 1.0
Behavior on scale { NumberAnimation{ duration: 55 } }
Text {
id: txt_title
x: 20
y: 20
width: parent.width - 2 * x
height: parent.height - 2 * y
color: "#6e6e6e"
text: prop_title
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.family: "Mukti Narrow"
font.strikeout: false
font.bold: false
font.italic: false
fontSizeMode : Text.Fit
minimumPixelSize: 10
font.pixelSize: 0.6 * parent.height
}
}
MouseArea {
id: ma_button
anchors.fill: parent
onClicked: buttonClick()
hoverEnabled: true
onEntered: rec_button.border.color = onHoverColor
onExited: rec_button.border.color = borderColor
}
}
}