import QtQuick 2.2
import QtQuick.Layouts 1.1
import "../../commons/"
Core {
id: page
width: 400; height: 640
property int refreshRate: 3000;
property variant logicConnections;
logicConnections: [
{
"logicID":"0",
"logicDevice" : "0",
"logicParameter" : "setting.louvre.all.close",
"logicLocal" : "vqml_setting_louvre_all_close",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"1",
"logicDevice" : "0",
"logicParameter" : "setting.louvre.all.open",
"logicLocal" : "vqml_setting_louvre_all_open",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"2",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.7.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_7",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"3",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.1.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_1",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"4",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.2.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_2",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"5",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.3.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_3",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"6",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.4.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_4",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"7",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.5.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_5",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"8",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.6.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_6",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"9",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.30.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_30",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"10",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.31.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_31",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"11",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.32.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_32",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"12",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.33.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_33",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"13",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.34.setting.louvre.demand.value",
"logicLocal" : "vqml_setting_louvre_demand_value_id_34",
"logicDirection": "toDevice",
"logicRange" : ["0", "65535"],
"fastRead" : true
},
{
"logicID":"14",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.10.output.px.0",
"logicLocal" : "vqml_fp_fan",
"logicDirection": "toDevice",
"logicRange" : ["0", "100"],
"fastRead" : true
},
{
"logicID":"15",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.11.output.px.0",
"logicLocal" : "vqml_vent_level",
"logicDirection": "toDevice",
"logicRange" : ["0", "100"],
"fastRead" : true
},
{
"logicID":"16",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.11.output.do.2",
"logicLocal" : "vqml_vent_hood",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"17",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.1.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_1",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"18",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.2.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_2",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"19",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.3.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_3",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"20",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.4.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_4",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"21",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.5.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_5",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"22",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.6.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_6",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"23",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.7.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_7",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"24",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.30.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_30",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"25",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.31.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_31",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"26",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.32.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_32",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"27",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.33.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_33",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
{
"logicID":"28",
"logicDevice" : "0",
"logicParameter" : "rs.0.id.34.counter.louvre.demand.value",
"logicLocal" : "vqml_counter_louvre_demand_value_id_34",
"logicDirection": "toDevice",
"logicRange" : ["0", "1"],
"fastRead" : true
},
];
property int vqml_setting_louvre_all_close : 65535; // 0
property int vqml_setting_louvre_all_open : 65535; // 1
property int vqml_setting_louvre_demand_value_id_7 : 65535; // 2
property int vqml_setting_louvre_demand_value_id_1 : 65535; // 3
property int vqml_setting_louvre_demand_value_id_2 : 65535; // 4
property int vqml_setting_louvre_demand_value_id_3 : 65535; // 5
property int vqml_setting_louvre_demand_value_id_4 : 65535; // 6
property int vqml_setting_louvre_demand_value_id_5 : 65535; // 7
property int vqml_setting_louvre_demand_value_id_6 : 65535; // 8
property int vqml_setting_louvre_demand_value_id_30 : 65535; // 9
property int vqml_setting_louvre_demand_value_id_31 : 65535; // 10
property int vqml_setting_louvre_demand_value_id_32 : 65535; // 11
property int vqml_setting_louvre_demand_value_id_33 : 65535; // 12
property int vqml_setting_louvre_demand_value_id_34 : 65535; // 13
property int vqml_fp_fan : 0; // 14
property int vqml_vent_level : 0; // 15
property int vqml_vent_hood : 0; // 16
property int vqml_counter_louvre_demand_value_id_1 : 65535;
property int vqml_counter_louvre_demand_value_id_2 : 65535;
property int vqml_counter_louvre_demand_value_id_3 : 65535;
property int vqml_counter_louvre_demand_value_id_4 : 65535;
property int vqml_counter_louvre_demand_value_id_5 : 65535;
property int vqml_counter_louvre_demand_value_id_6 : 65535;
property int vqml_counter_louvre_demand_value_id_7 : 65535;
property int vqml_counter_louvre_demand_value_id_30 : 65535;
property int vqml_counter_louvre_demand_value_id_31 : 65535;
property int vqml_counter_louvre_demand_value_id_32 : 65535;
property int vqml_counter_louvre_demand_value_id_33 : 65535;
property int vqml_counter_louvre_demand_value_id_34 : 65535;
signal commitValue(int a_index, int a_setting_value, int a_counter_value)
/*
* Typy parametrów - opis w Core.qml
*
*/
function set_settingsListModel() {
settingsListModel.append({"param_title" : "Zamknij wszystkie", "param_type" : 1, "param_p_0" : "65535;1", "param_p_1": "Bez zmian; Zamknij", "param_qml" : ""}) // 0
settingsListModel.append({"param_title" : "Otwórz wszystkie", "param_type" : 1, "param_p_0" : "65535;1", "param_p_1": "Bez zmian; Otwórz", "param_qml" : ""}) // 1
settingsListModel.append({"param_title" : "Salon - wyjście", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 2
settingsListModel.append({"param_title" : "Gabinet - okno", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 3
settingsListModel.append({"param_title" : "Gabinet - drzwi", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 4
settingsListModel.append({"param_title" : "Wykusz - PN", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 5
settingsListModel.append({"param_title" : "Wykusz - ZACH", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 6
settingsListModel.append({"param_title" : "Wykusz - PD", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 7
settingsListModel.append({"param_title" : "Jadalnia", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 8
settingsListModel.append({"param_title" : "Zuzi", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 9
settingsListModel.append({"param_title" : "Janka", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 10
settingsListModel.append({"param_title" : "Łazienka", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 11
settingsListModel.append({"param_title" : "Sypialnia - prawa", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 12
settingsListModel.append({"param_title" : "Sypialnia - lewa", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 13
settingsListModel.append({"param_title" : "Wentylator", "param_type" : 2, "param_p_0" : "0;5;0;100", "param_p_1": "%", "param_qml" : ""}) // 14
settingsListModel.append({"param_title" : "Wentylator", "param_type" : 1, "param_p_0" : "0;100", "param_p_1": "Wyłączony;Włączony", "param_qml" : ""}) // 15
settingsListModel.append({"param_title" : "Okap", "param_type" : 1, "param_p_0" : "0;1", "param_p_1": "Wyłączony;Włączony", "param_qml" : ""}) // 16
prepareDynamicQMLs()
}
/*
* Zatwierdza zmienne qml - wysyła ich wartości do kontrolek stworzonych dynamicznie
* (sygnał dla kontrolki)
*/
function commitAllValues() {
commitValue(0, vqml_setting_louvre_all_close, 65535);
commitValue(1, vqml_setting_louvre_all_open, 65535);
commitValue(2, vqml_setting_louvre_demand_value_id_7, vqml_counter_louvre_demand_value_id_7);
commitValue(3, vqml_setting_louvre_demand_value_id_1, vqml_counter_louvre_demand_value_id_1);
commitValue(4, vqml_setting_louvre_demand_value_id_2, vqml_counter_louvre_demand_value_id_2);
commitValue(5, vqml_setting_louvre_demand_value_id_3, vqml_counter_louvre_demand_value_id_3);
commitValue(6, vqml_setting_louvre_demand_value_id_4, vqml_counter_louvre_demand_value_id_4);
commitValue(7, vqml_setting_louvre_demand_value_id_5, vqml_counter_louvre_demand_value_id_5);
commitValue(8, vqml_setting_louvre_demand_value_id_6, vqml_counter_louvre_demand_value_id_6);
commitValue(9, vqml_setting_louvre_demand_value_id_30, vqml_counter_louvre_demand_value_id_30);
commitValue(10, vqml_setting_louvre_demand_value_id_31, vqml_counter_louvre_demand_value_id_31);
commitValue(11, vqml_setting_louvre_demand_value_id_32, vqml_counter_louvre_demand_value_id_32);
commitValue(12, vqml_setting_louvre_demand_value_id_33, vqml_counter_louvre_demand_value_id_33);
commitValue(13, vqml_setting_louvre_demand_value_id_34, vqml_counter_louvre_demand_value_id_34);
commitValue(14, vqml_fp_fan, 65535);
commitValue(15, vqml_vent_level, 65535);
commitValue(16, vqml_vent_hood, 65535);
}
/*
* Nastąpiła zmiana ustawienia w kontrolce stworzonej dynamicznie -
* przypisanie zmiennej qml wartości z kontrolki
* (sygnał z kontrolki)
*/
function updateValue(a_index, a_value) {
eval("thisObject.changeLogicValue(" + a_index + ", " + a_value + ")")
switch (a_index) {
case 0:
vqml_setting_louvre_all_close = a_value
break;
case 1:
vqml_setting_louvre_all_open = a_value
break;
case 2:
vqml_setting_louvre_demand_value_id_7 = a_value
break;
case 3:
vqml_setting_louvre_demand_value_id_1 = a_value
break;
case 4:
vqml_setting_louvre_demand_value_id_2 = a_value
break;
case 5:
vqml_setting_louvre_demand_value_id_3 = a_value
break;
case 6:
vqml_setting_louvre_demand_value_id_4 = a_value
break;
case 7:
vqml_setting_louvre_demand_value_id_5 = a_value
break;
case 8:
vqml_setting_louvre_demand_value_id_6 = a_value
break;
case 9:
vqml_setting_louvre_demand_value_id_30 = a_value
break;
case 10:
vqml_setting_louvre_demand_value_id_31 = a_value
break;
case 11:
vqml_setting_louvre_demand_value_id_32 = a_value
break;
case 12:
vqml_setting_louvre_demand_value_id_33 = a_value
break;
case 13:
vqml_setting_louvre_demand_value_id_34 = a_value
break;
case 14:
vqml_fp_fan = a_value
break;
case 15:
vqml_vent_level = a_value
break;
case 16:
vqml_vent_hood = a_value
break;
default:
break;
}
}
/*
* Lista zgrupowanych parametrów nastawczych
*
* title: "Temperatura wewnętrzna" - nazwa grupy
* picture: "../../images/thermometer_01.svg" - ikona grupy
* setting_index: "0;1;2;3" - poszczególne indexy parametrów oddzielonych średnikiem, które mają być w ramach tej grupy
*
*/
ListModel {
id: settingsModel
ListElement {
title: "Rolety"
picture: "../../images/thermometer_01.svg"
setting_index: "0;1;2;3;4;5;6;7;8;9;10;11;12;13"
}
ListElement {
title: "Kominek"
picture: "../../images/sun_01.svg"
setting_index: "14"
}
ListElement {
title: "Wentylacja"
picture: "../../images/thermo_gray.svg"
setting_index: "15;16"
}
ListElement {
title: "Okna"
picture: "../../images/thermo_red.svg"
setting_index: "9;10"
}
ListElement {
title: "Pogoda"
picture: "../../images/thermo_red.svg"
setting_index: "11;12"
}
ListElement {
title: "Jednostka AC"
picture: "../../images/thermo_red.svg"
setting_index: "13"
}
ListElement {
title: "Wyjścia"
picture: "../../images/thermo_red.svg"
setting_index: "14;15;16"
}
}
function prepareDynamicQMLs() {
var tmp_str = "";
var tmp_title = "";
var tmp_type = "";
var tmp_p_0 = "";
var tmp_p_1 = "";
for(var i=0; i<settingsListModel.count; i++){
tmp_title = settingsListModel.get(i).param_title;
tmp_type = settingsListModel.get(i).param_type;
tmp_p_0 = settingsListModel.get(i).param_p_0;
tmp_p_1 = settingsListModel.get(i).param_p_1;
switch (tmp_type) {
case 1:
tmp_str = generateQMLstring("C_combo_set_01", i, tmp_title, tmp_type, tmp_p_0, tmp_p_1);
break
case 2:
tmp_str = generateQMLstring("C_value_set_01", i, tmp_title, tmp_type, tmp_p_0, tmp_p_1);
break
default:
tmp_str = "
import QtQuick 2.2;
import \"../../commons/\";
Text {
text: \"unknown type index: \" + " + i + "
}
";
break
}
settingsListModel.setProperty(i, "param_qml", tmp_str);
}
}
function createSettings(a_setting_index, a_parent) {
var tmp_setting_index = a_setting_index.split(";");
var tmp_str = "";
if (tmp_setting_index.length > 0) {
for (var i=0; i<tmp_setting_index.length; i++) {
tmp_str = settingsListModel.get(tmp_setting_index[i]).param_qml;
var dynamicObject = Qt.createQmlObject(tmp_str, a_parent, 'content_object');
}
}
}
ListModel {
id: settingsListModel
}
Timer {
id: timer
interval: 500; repeat: true
running: true
triggeredOnStart: true
onTriggered: commitAllValues()
}
Component {
id: settingDelegate
Item {
id: itm_setting
Component.onCompleted: {
set_settingsListModel();
}
property real details_visible : 0
width: listView.width
height: 70
Rectangle {
id: rec_background
x: 2
y: 2
width: parent.width - x * 2
height: parent.height - y * 2
color: "lightgray"
border.color: "gray"
radius: 5
ColumnLayout {
id: columnlayout_setting
x: 3
y: 3
width: parent.width - x * 2
height: parent.height - y * 2
spacing: 10
RowLayout {
spacing: 10
Layout.fillHeight: true
Layout.maximumHeight: 130
Layout.fillWidth: true
Item {
id: itm_Icon
Layout.preferredWidth: 60
Layout.preferredHeight: 130
Layout.maximumHeight: columnlayout_setting.height
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
// Rectangle{
// color: 'lightblue'
// anchors.fill: parent
// }
Image {
source: picture
sourceSize.height: height
sourceSize.width: width
anchors.centerIn: parent
anchors.fill: parent
fillMode: Image.PreserveAspectFit
}
}
Item {
id: itm_title
Layout.fillWidth: true
Layout.fillHeight: true
// Rectangle{
// color: 'lightblue'
// anchors.fill: parent
// }
Text {
id: txt_title
anchors.fill: parent
text: title
elide: Text.ElideRight
wrapMode: Text.WordWrap
font.pixelSize: 22
clip: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
Image {
id: img_details_collapse
source: "../../images/close_01.svg"
sourceSize.height: height
sourceSize.width: width
height: 15
width: 30
y: parent.height - 5
//anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.rightMargin: 5
opacity: itm_setting.details_visible
}
}
MouseArea {
anchors.fill: parent
onClicked: (itm_setting.state == "") ? itm_setting.state = "Details" : itm_setting.state = ""
}
}
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
spacing: 2
Item {
Layout.fillWidth: true
Layout.fillHeight: true
opacity: itm_setting.details_visible
Rectangle {
id: rec_details_background
x: 0
y: 0
width: parent.width - x * 2
height: parent.height - y * 2
color: "lightgray"
border.color: "gray"
radius: 5
}
Flickable {
id: flick_details
x: 2
y: 2
width: parent.width - x * 2
height: parent.height - y * 2
contentHeight: itm_setting_content.height
clip: true
Component.onCompleted: {
createSettings(setting_index, column_layout_settings)
}
Item {
id: itm_setting_content
width: parent.width
//height: content_height
height: column_layout_settings.implicitHeight
ColumnLayout{
id: column_layout_settings
x: 13
y: 5
width: parent.width - 2 * x
height: parent.height - 2 * y
spacing: 10
}
}
}
Image {
anchors.right: flick_details.right
anchors.top: flick_details.top
source: "../../images/moreUp.png"
opacity: flick_details.atYBeginning ? 0 : 1
}
Image {
anchors.right: flick_details.right
anchors.bottom: flick_details.bottom
source: "../../images/moreDown.png"
opacity: flick_details.atYEnd ? 0 : 1
}
// Rectangle{
// color: 'plum'
// anchors.fill: parent
// }
}
}
}
}
states: State {
name: "Details"
PropertyChanges { target: rec_background; color: "linen" }
PropertyChanges { target: itm_Icon; Layout.preferredWidth: 130 }
PropertyChanges { target: itm_setting; details_visible: 1}
PropertyChanges { target: itm_setting; height: listView.height }
// Move the list so that this item is at the top.
PropertyChanges { target: itm_setting.ListView.view; explicit: true; contentY: itm_setting.y }
// Disallow flicking while we're in detailed view
PropertyChanges { target: itm_setting.ListView.view; interactive: false }
}
transitions: Transition {
ParallelAnimation {
ColorAnimation { property: "color"; duration: 1000 }
NumberAnimation { duration: 300; properties: "details_visible,x,contentY,height,preferredWidth,width" }
}
}
}
}
ListView {
id: listView
anchors.fill: parent
model: settingsModel
delegate: settingDelegate
}
}