Qt Insight - Qt Quick Application

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Effects

Item {
    id: root
    property alias continueButton: continueButton
    property alias cancelButton: cancelButton
    property alias dialog: dialog
    property string coffeeName: ""

    states: [
        State {
            name: "portrait"
            PropertyChanges {
                target: grid
                flow: GridLayout.TopToBottom
                rowSpacing: 20
                columns: 1
                rows: 4
            }
            PropertyChanges {
                target: cup
                Layout.alignment: Qt.AlignCenter
                Layout.preferredWidth: height / 1.16
                Layout.preferredHeight: root.height / 3
                Layout.row: 0
            }
            PropertyChanges {
                target: dialog
                Layout.row: 1
                Layout.alignment: Qt.AlignCenter
                Layout.preferredWidth: root.width / 1.12
                Layout.preferredHeight: root.height / 7
            }
            PropertyChanges {
                target: continueButton
                Layout.row: 2
                Layout.preferredWidth: root.width / 2.2
                Layout.preferredHeight: root.height / 14
            }
            PropertyChanges {
                target: cancelButton
                Layout.row: 3
                Layout.preferredWidth: root.width / 2.2
                Layout.preferredHeight: root.height / 14
            }
        },
        State {
            name: "landscape"
            PropertyChanges {
                target: grid
                flow: GridLayout.LeftToRight
                columns: 3
                rows: 3
                rowSpacing: 20
            }
            PropertyChanges {
                target: cup
                Layout.alignment: Qt.AlignCenter
                Layout.preferredHeight: root.height / 1.5
                Layout.preferredWidth: root.width / 5
                Layout.column: 2
                Layout.row: 0
            }
            PropertyChanges {
                target: dialog
                Layout.preferredWidth: root.width / 4
                Layout.preferredHeight: parent.height / 4
                Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
                Layout.column: 0
                Layout.row: 0
                Layout.columnSpan: 2
            }
            PropertyChanges {
                target: continueButton
                Layout.column: 2
                Layout.row: 2
                Layout.preferredWidth: root.width / 4
                Layout.preferredHeight: root.height / 8
            }
            PropertyChanges {
                target: cancelButton
                Layout.column: 0
                Layout.row: 2
                Layout.preferredWidth: root.width / 4
                Layout.preferredHeight: root.height / 8
            }
        }
    ]
    GridLayout {
        id: grid
        flow: GridLayout.TopToBottom
        anchors.horizontalCenter: parent.horizontalCenter
        Cup {
            id: cup
        }
        Rectangle {
            id: dialog
            radius: 8
            Layout.minimumHeight: 70
            Layout.minimumWidth: 180
            gradient: Colors.greenBorder
            Rectangle {
                id: rectangle
                width: parent.width - 2
                height: parent.height - 2
                radius: 8
                anchors.verticalCenter: parent.verticalCenter
                anchors.horizontalCenter: parent.horizontalCenter
                color: Colors.currentTheme.cardColor
                Text {
                    text: "Please Insert your Cup!"
                    color: Colors.currentTheme.textColor
                    anchors.horizontalCenter: parent.horizontalCenter
                    anchors.verticalCenter: parent.verticalCenter
                }
            }
            MultiEffect {
                source: rectangle
                anchors.fill: rectangle
                shadowEnabled: true
                shadowColor: Colors.shadow
                shadowOpacity: 0.5
            }
        }
        CustomButton {
            id: continueButton
            Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
            Layout.minimumWidth: 150
            Layout.minimumHeight: 40
            showIcon: false
            buttonText: "Continue"
            buttonColor: "green"
        }
        CustomButton {
            id: cancelButton
            Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
            Layout.minimumWidth: 150
            Layout.minimumHeight: 40
            showIcon: false
            buttonText: "Cancel"
        }
    }
}