import QtQuick 2.3
import QtQuick.Layouts 1.1
import "../../commons/"
Core {
id: page
width: 400; height: 240
property int vqml_setting_inside_demand_t_override : 80; // 0
property int vqml_setting_inside_demand_t_day : 210; // 1
property int vqml_setting_inside_demand_t_night : 180; // 2
signal commitValue(int a_index, int a_value)
/*
* Typy parametrów - opis w Core.qml
*
* param_p_3 - bazowa zmiana parametru
*
*/
function set_settingsListModel() {
settingsListModel.append({"param_title" : "Chwilowa", "param_type" : 2, "param_p_0" : "10", "param_p_1": "°C", "param_p_2": "1", "param_p_3": "1", "param_qml" : ""}) // 0
settingsListModel.append({"param_title" : "Dzienna", "param_type" : 2, "param_p_0" : "10", "param_p_1": "°C", "param_p_2": "1", "param_p_3": "1", "param_qml" : ""}) // 1
settingsListModel.append({"param_title" : "Nocna", "param_type" : 2, "param_p_0" : "10", "param_p_1": "°C", "param_p_2": "1", "param_p_3": "1", "param_qml" : ""}) // 2
prepareDynamicQMLs()
}
/*
* Zatwierdza zmienne qml - wysyła ich wartości do kontrolek stworzonych dynamicznie
* (sygnał dla kontrolki)
*/
function commitAllValues() {
commitValue(0, vqml_setting_inside_demand_t_override);
commitValue(1, vqml_setting_inside_demand_t_day);
commitValue(2, vqml_setting_inside_demand_t_night);
}
/*
* 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) {
switch (a_index) {
case 0:
vqml_setting_inside_demand_t_override = a_value
break;
case 1:
vqml_setting_inside_demand_t_day = a_value
break;
case 2:
vqml_setting_inside_demand_t_night = 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: "Temperatura"
picture: "../../images/thermometer_01.svg"
setting_index: "0;1;2"
}
}
function prepareDynamicQMLs() {
var tmp_str = "";
var tmp_title = "";
var tmp_type = "";
var tmp_p_0 = "";
var tmp_p_1 = "";
var tmp_p_2 = "";
var tmp_p_3 = "";
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;
tmp_p_2 = settingsListModel.get(i).param_p_2;
tmp_p_3 = settingsListModel.get(i).param_p_3;
switch (tmp_type) {
case 1:
tmp_str = generateQMLstring("C_combo_set_01", i, tmp_title, tmp_type, tmp_p_0, tmp_p_1, tmp_p_2, tmp_p_3);
break
case 2:
tmp_str = generateQMLstring("C_value_set_01", i, tmp_title, tmp_type, tmp_p_0, tmp_p_1, tmp_p_2, tmp_p_3);
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 : 1
width: listView.width
height: listView.height
Rectangle {
id: rec_background
x: 2
y: 2
width: parent.width - x * 2
height: parent.height - y * 2
color: "linen"
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: 130
Layout.preferredHeight: 130
Layout.maximumHeight: columnlayout_setting.height
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
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
}
}
}
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
}
}
}
}
}
}
}
ListView {
id: listView
anchors.fill: parent
model: settingsModel
delegate: settingDelegate
interactive: false
}
/*
Item {
anchors.bottom: parent.bottom
width: parent.width
height: 30
Rectangle {
anchors.fill: parent
color: "lightblue"
}
Text {
anchors.centerIn: parent
text: vqml_setting_inside_demand_t_day
}
MouseArea {
id: mouseArea1
anchors.fill: parent
onClicked: {
++vqml_setting_inside_demand_t_day;
}
}
}
*/
}