// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

import QtQuick

Rectangle {
    id: root
    property bool mirror: (Qt.application as Application).layoutDirection == Qt.RightToLeft
    LayoutMirroring.enabled: mirror
    LayoutMirroring.childrenInherit: true
    width: 320
    height: 480
    color: "lightsteelblue"

    Flickable {
        anchors {
            fill: parent
            margins: 10
        }
        contentWidth: parent.width
        contentHeight: content.height
        flickableDirection: Flickable.VerticalFlick

        Column {
            id: content
            spacing: 10
            anchors {
                left: parent.left
                right: parent.right
            }

            Text {
                text: qsTr("Text alignment")
                anchors.left: parent.left
            }

            Rectangle {
                width: textStrings.width + 10
                height: textStrings.height + 10
                color: "white"
                anchors.left: parent.left
                Column {
                    anchors.centerIn: parent
                    id: textStrings
                    spacing: 5
                    width: 148
                    Text {
                        id: englishText
                        width: parent.width
                        text: qsTr("English text")
                    }
                    Text {
                        id: arabicText
                        width: parent.width
                        text: qsTr("النص العربي")
                    }
                    Text {
                        id: leftAlignedText
                        width: parent.width
                        text: qsTr("Text aligned to left")
                        horizontalAlignment: Text.AlignLeft
                    }
                    Text {
                        id: rightAlignedText
                        width: parent.width
                        text: qsTr("Text aligned to right")
                        horizontalAlignment: Text.AlignRight
                    }
                }
            }

            Text {
                text: qsTr("Item x")
                anchors.left: parent.left
            }
            Rectangle {
                id: items
                color: Qt.rgba(0.2, 0.2, 0.2, 0.6)
                width: 275
                height: 95
                anchors.left: parent.left
                Rectangle {
                    y: 5
                    x: 5
                    width: 130
                    height: 40
                    Text {
                        text: qsTr("Item with x: 5\n(not mirrored)")
                        anchors.centerIn: parent
                    }
                }
                Rectangle {
                    color:  Qt.rgba(0.7, 0.7, 0.7)
                    x: mirror(5)
                    y: 50
                    width: 130
                    height: 40
                    function mirror(value) {
                        return LayoutMirroring.enabled ? (parent.width - width - value) : value;
                    }
                    Text {
                        text: qsTr("Item with x: %1 \n(manually mirrored)").arg(parent.x)
                        anchors.centerIn: parent
                    }
                }
            }
            Text {
                text: qsTr("Item anchors")
                anchors.left: parent.left
            }

            Rectangle {
                id: anchoredItems
                color: Qt.rgba(0.2, 0.2, 0.2, 0.6)
                width: 270
                height: 170
                anchors.left: parent.left
                Rectangle {
                    id: blackRectangle
                    color: "black"
                    width: 180
                    height: 90
                    anchors {
                        horizontalCenter: parent.horizontalCenter
                        horizontalCenterOffset: 30
                    }
                    Text {
                        text: qsTr("Horizontal center anchored\nwith offset 30\nto the horizontal center\nof the parent.")
                        color: "white"
                        anchors.centerIn: parent
                    }
                }
                Rectangle {
                    id: whiteRectangle
                    color: "white"
                    width: 120
                    height: 70
                    anchors {
                        left: parent.left
                        bottom: parent.bottom
                    }
                    Text {
                        text: qsTr("Left side anchored\nto the left side\nof the parent.")
                        color: "black"
                        anchors.centerIn: parent
                    }
                }
                Rectangle {
                    id: grayRectangle
                    color: Qt.rgba(0.7, 0.7, 0.7)
                    width: 140
                    height: 90
                    anchors {
                        right: parent.right
                        bottom: parent.bottom
                    }
                    Text {
                        text: qsTr("Right side anchored\nto the right side\nof the parent.")
                        anchors.centerIn: parent
                    }
                }
            }
        }
    }

    Rectangle {
        id: mirrorButton
        color: mouseArea2.pressed ? "black" : "gray"
        height: 50
        width: 160
        anchors.right: parent.right
        anchors.top: parent.top
        anchors.margins: 10
        Column {
            anchors.centerIn: parent
            Text {
                text: root.mirror ? qsTr("Mirrored") : qsTr("Not mirrored")
                color: "white"
                font.pixelSize: 16
                anchors.horizontalCenter: parent.horizontalCenter
            }
            Text {
                text: qsTr("(click here to toggle)")
                color: "white"
                font.pixelSize: 10
                font.italic: true
                anchors.horizontalCenter: parent.horizontalCenter
            }
        }
        MouseArea {
            id: mouseArea2
            anchors.fill: parent
            onClicked: root.mirror = !root.mirror;
        }
    }
}

