C

Qt Quick Ultralite Thermostat Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.15
import QtQuickUltralite.Extras 2.0
import Thermo 1.0
import ThermoConfiguration 1.0

Rectangle {
    id: dialog
    function hide() {
        if (Configuration.enableFadingAnimations) {
            hideAnimation.running = true;
        } else {
            dialog.visible = false;
        }
    }
    function show() {
        if (Configuration.enableFadingAnimations) {
            showAnimation.running = true;
        } else {
            dialog.visible = true;
        }
    }

    color: "#88000000"
    opacity: Configuration.enableFadingAnimations ? 0 : 1
    visible: false

    Behavior on opacity  {
        NumberAnimation {
        }
    }

    SequentialAnimation {
        id: showAnimation
        alwaysRunToEnd: true

        ScriptAction {
            script: dialog.visible = true
        }
        PropertyAnimation {
            duration: 50
            from: 0.0
            property: "opacity"
            target: dialog
            to: 1.0
        }
    }
    SequentialAnimation {
        id: hideAnimation
        alwaysRunToEnd: true

        PropertyAnimation {
            duration: 50
            from: 1.0
            property: "opacity"
            target: dialog
            to: 0.0
        }
        ScriptAction {
            script: dialog.visible = false
        }
    }
    MouseArea {
        anchors.fill: parent
    }
    Image {
        id: background
        anchors.centerIn: parent
        source: "popup-bg.png"

        Item {
            id: titleBar
            height: Theme.dialogBarHeight
            width: background.width

            ColorizedImage {
                id: close
                color: ColorStyle.greyDark4
                source: "close.png"

                anchors {
                    right: parent.right
                    rightMargin: Theme.dialogRightMargin
                    topMargin: 22
                    verticalCenter: parent.verticalCenter
                }
            }
            MouseArea {
                onClicked: {
                    dialog.hide();
                }

                anchors {
                    fill: close
                    margins: -close.width
                }
            }
            Text {
                id: title
                font.pixelSize: Theme.topBarFontSize
                //% "Language Settings"
                text: qsTrId("id-languagesettings")

                anchors {
                    left: parent.left
                    leftMargin: Theme.dialogLeftMargin
                    verticalCenter: parent.verticalCenter
                }
            }
        }
        Column {
            id: langCards
            anchors {
                left: titleBar.left
                leftMargin: Theme.dialogLeftMargin
                verticalCenter: parent.verticalCenter
                verticalCenterOffset: titleBar.height / 2
            }
            // No ButtonGroup yet so exclusive checking is implemented manualy
            LanguageButton {
                id: english
                checked: Qt.uiLanguage == "en_GB"
                enabled: !checked
                flag: "UK.png"
                text: "English"

                onCheckedChanged: {
                    if (checked) {
                        Qt.uiLanguage = "en_GB";
                        german.checked = false;
                        japanese.checked = false;
                        arabic.checked = false;
                        thai.checked = false;
                        hindi.checked = false;
                    }
                }
            }
            LanguageButton {
                id: german
                checked: Qt.uiLanguage == "de_DE"
                enabled: !checked
                flag: "GERMANY.png"
                text: "Deutsch"

                onCheckedChanged: {
                    if (checked) {
                        english.checked = false;
                        japanese.checked = false;
                        arabic.checked = false;
                        thai.checked = false;
                        hindi.checked = false;
                        Qt.uiLanguage = "de_DE";
                    }
                }
            }
            LanguageButton {
                id: japanese
                checked: Qt.uiLanguage == "ja_JP"
                enabled: !checked
                flag: "JAPAN.png"
                text: "日本語"

                onCheckedChanged: {
                    if (checked) {
                        english.checked = false;
                        german.checked = false;
                        arabic.checked = false;
                        thai.checked = false;
                        hindi.checked = false;
                        Qt.uiLanguage = "ja_JP";
                    }
                }
            }
            LanguageButton {
                id: arabic
                checked: Qt.uiLanguage == "ar_EG"
                enabled: !checked
                flag: "EGYPT.png"
                text: "عربي"
                visible: FontConfiguration.enableComplexScripts

                onCheckedChanged: {
                    if (checked) {
                        english.checked = false;
                        german.checked = false;
                        japanese.checked = false;
                        thai.checked = false;
                        hindi.checked = false;
                        Qt.uiLanguage = "ar_EG";
                    }
                }
            }
            LanguageButton {
                id: thai
                checked: Qt.uiLanguage == "th_TH"
                enabled: !checked
                flag: "THAILAND.png"
                text: "ไทย"
                visible: FontConfiguration.enableComplexScripts

                onCheckedChanged: {
                    if (checked) {
                        english.checked = false;
                        german.checked = false;
                        japanese.checked = false;
                        arabic.checked = false;
                        hindi.checked = false;
                        Qt.uiLanguage = "th_TH";
                    }
                }
            }
            LanguageButton {
                id: hindi
                checked: Qt.uiLanguage == "hi_IN"
                enabled: !checked
                flag: "INDIA.png"
                text: "हिन्दी"
                visible: FontConfiguration.enableComplexScripts

                onCheckedChanged: {
                    if (checked) {
                        english.checked = false;
                        german.checked = false;
                        japanese.checked = false;
                        arabic.checked = false;
                        thai.checked = false;
                        Qt.uiLanguage = "hi_IN";
                    }
                }
            }
        }
    }
}