• File: temperature.qml
  • Full Path: /home/insbudnet/domains/insbud.net/public_html/download/software/qml/olkusz_mila/qml/pl/screens/user/temperature.qml
  • File size: 11.09 KB
  • MIME-type: text/plain
  • Charset: utf-8
 
Open Back
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;
            }
        }
    }
*/

}