• File: C_graphic_status_view_01.qml
  • Full Path: /home/insbudnet/domains/insbud.net/public_html/download/software/qml/ostoia/qml/pl/commons/C_graphic_status_view_01.qml
  • File size: 6.53 KB
  • MIME-type: text/plain
  • Charset: utf-8
 
Open Back
/*
 * Obsługuje typy (opis typów w Core):
 *
 * 2
 *
 */

import QtQuick 2.3
import QtQuick.Layouts 1.1

Core {
    id: container

    /*
     * Kontrolka przedstawiająca graficznie dwa statusy w jednym rzędzie
     */

    /*
     * Property do ustawienia przy tworzeniu
     */

    property string     prop_title: ""                                                          // nagłówek parametru
    property int        prop_index : -1                                                         // index
    property string     prop_p_0 : "C_window_01/window_01_open.svg;arrow_red.svg"               // parametry rozdzielone średnikiem, oznaczenie w/g kolejności jak niżej

    /*
     * Property prywatne definiowane z prop_p_0
     */

    property string     prv_left_symbol_on: "arrow_red.svg"                                     // symbol po lewej stan 1
    property string     prv_left_symbol_off: "arrow_blue.svg"                                   // symbol po lewej stan 0
    property string     prv_right_symbol_on: "arrow_red.svg"                                    // symbol po prawej stan 1
    property string     prv_right_symbol_off: "arrow_blue.svg"                                  // symbol po prawej stan 1

    /*
     * Property prywatne pozostałe
     */

    property int        prv_left_status : 0                                                     // status po lewej
    property int        prv_right_status : 0                                                    // status po prawej
    property int        prv_initialized : 0                                                     // kontrolka została zainicjalizowana

    property double prop_left_start_width: 450.99
    property double prop_left_start_height: 287.66

    property double prop_right_start_width: 44
    property double prop_right_start_height: 64

    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"
    signal valueChanged(int a_index, int a_value)

    // sygnal z rodzica (zmieniono wartosc)
    function setValue(a_index, a_left_status, a_right_status, a_na1, a_na2) {
        if (container != null) {
            if (a_index === prop_index) {
                prv_left_status = a_left_status;
                prv_right_status = a_right_status;
            }
        }
    }

    Component.onCompleted: {
        if (!prv_initialized) {
            valueChanged.connect(updateValue);
            commitValue.connect(setValue);

            var tmp_value = prop_p_0.split(";");

            prv_left_symbol_on = tmp_value[0];
            prv_left_symbol_off = tmp_value[1];
            prv_right_symbol_on = tmp_value[2];
            prv_right_symbol_off = tmp_value[3];

            prv_initialized = 1;
        }    }

    ColumnLayout {
        anchors.fill: parent
        spacing: 5

        Item {
            Layout.fillWidth: true
            Layout.preferredHeight: 25
            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter

            Text {
                text: prop_title
                font.pixelSize: parent.height * 0.85
                anchors.fill: parent
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                clip: true
                wrapMode: Text.WordWrap
                elide: Text.ElideRight

            }

        }

        RowLayout{
            spacing: 0

            Item {
                id: itm_left_sep
                Layout.preferredHeight: 70
                Layout.preferredWidth: 38
            }

            Item {
                id: itm_left_value
                Layout.fillHeight: true
                Layout.fillWidth: true

                Rectangle{
                    id: rec_left_value
                    anchors.fill: parent
                    radius: 10
                    border.width: 2
                    border.color: "#b8b8b8"

                    color: "#e9e9e9"
                }

                Image {
                    id: img_left
                    anchors.centerIn: parent
                    sourceSize.height: height
                    sourceSize.width: width
                    width: (height * prop_left_start_width / prop_left_start_height < parent.width * 0.8) ? height * prop_left_start_width / prop_left_start_height : parent.width * 0.8
                    height: parent.height * 0.8
                    //height: (height * prop_left_start_width / prop_left_start_height < parent.width * 0.8) ? parent.height * 0.8 : width * prop_left_start_height / prop_left_start_width
                    source: (prv_left_status) ? ("../images/" + prv_left_symbol_on) : ("../images/" + prv_left_symbol_off)
                    verticalAlignment: Text.AlignVCenter
                    horizontalAlignment: Text.AlignHCenter
                }
            }
            Item {
                id: itm_sep_01
                Layout.fillHeight: true
                Layout.preferredWidth: 20
            }

            Item {
                id: itm_right_value
                Layout.fillHeight: true
                Layout.fillWidth: true

                Rectangle{
                    id: rec_right_value
                    anchors.fill: parent
                    radius: 10
                    border.width: 2
                    border.color: "#b8b8b8"

                    color: "#e9e9e9"
                }

                Image {
                    id: img_right
                    anchors.centerIn: parent
                    sourceSize.height: height
                    sourceSize.width: width
                    width: (height * prop_right_start_width / prop_right_start_height < parent.width * 0.8) ? height * prop_right_start_width / prop_right_start_height : parent.width * 0.8
                    height: parent.height * 0.8
                    //                    height: (height * prop_right_start_width / prop_right_start_height < parent.width * 0.8) ? parent.height * 0.8 : width * prop_right_start_height / prop_right_start_width
                    source: (prv_right_status) ? ("../images/" + prv_right_symbol_on) : ("../images/" + prv_right_symbol_off)
                    verticalAlignment: Text.AlignVCenter
                    horizontalAlignment: Text.AlignHCenter
                }
            }

            Item {
                id: itm_right_sep
                Layout.preferredHeight: 70
                Layout.preferredWidth: 38
            }

        }
    }

}