aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/righttoleft/layoutdirection/layoutdirection.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/righttoleft/layoutdirection/layoutdirection.qml')
-rw-r--r--tests/manual/righttoleft/layoutdirection/layoutdirection.qml220
1 files changed, 220 insertions, 0 deletions
diff --git a/tests/manual/righttoleft/layoutdirection/layoutdirection.qml b/tests/manual/righttoleft/layoutdirection/layoutdirection.qml
new file mode 100644
index 0000000000..5f9bc6ca9c
--- /dev/null
+++ b/tests/manual/righttoleft/layoutdirection/layoutdirection.qml
@@ -0,0 +1,220 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+
+pragma ComponentBehavior: Bound
+
+Rectangle {
+ id: root
+ property bool mirror
+ property int direction: (Qt.application as Application).layoutDirection
+ LayoutMirroring.enabled: mirror
+ LayoutMirroring.childrenInherit: true
+ width: 320
+ height: 480
+ Column {
+ id: columnA
+ spacing: 10
+ x: 10
+ y: 10
+ width: 140
+
+ Item {
+ id: rowCell
+ }
+ Text {
+ text: qsTr("Row")
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Row {
+ layoutDirection: root.direction
+ spacing: 10
+ move: Transition {
+ NumberAnimation {
+ properties: "x"
+ }
+ }
+ Repeater {
+ model: 3
+ delegate: PositionerDelegate {
+ }
+ }
+ }
+
+ Text {
+ text: qsTr("Grid")
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Grid {
+ layoutDirection: root.direction
+ spacing: 10
+ columns: 3
+ move: Transition {
+ NumberAnimation {
+ properties: "x"
+ }
+ }
+ Repeater {
+ model: 8
+ delegate: PositionerDelegate {
+ }
+ }
+ }
+
+ Text {
+ text: qsTr("Flow")
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Flow {
+ layoutDirection: root.direction
+ spacing: 10; width: parent.width
+ move: Transition {
+ NumberAnimation {
+ properties: "x"
+ }
+ }
+ Repeater {
+ model: 8
+ delegate: PositionerDelegate {
+
+ }
+ }
+ }
+ }
+ Column {
+ id: columnB
+ spacing: 10
+ x: 160
+ y: 10
+
+ Text {
+ text: qsTr("ListView")
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ ListView {
+ id: listView
+ clip: true
+ width: parent.width; height: 40
+ layoutDirection: root.direction
+ orientation: Qt.Horizontal
+ model: 48
+ delegate: ViewDelegate {
+ }
+ }
+
+ Text {
+ text: "GridView"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ GridView {
+ clip: true
+ width: 150; height: 160
+ cellWidth: 50; cellHeight: 50
+ layoutDirection: root.direction
+ model: 48
+ delegate: ViewDelegate {
+ }
+ }
+
+ Rectangle {
+ height: 50; width: parent.width
+ color: mouseArea.pressed ? "black" : "gray"
+ Column {
+ anchors.centerIn: parent
+ Text {
+ text: root.direction ? qsTr("Right to left") : qsTr("Left to right")
+ 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: mouseArea
+ anchors.fill: parent
+ onClicked: {
+ if (root.direction === Qt.LeftToRight) {
+ root.direction = Qt.RightToLeft;
+ } else {
+ root.direction = Qt.LeftToRight;
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ height: 50; width: parent.width
+ color: mouseArea2.pressed ? "black" : "gray"
+ 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;
+ }
+ }
+ }
+ }
+
+ component PositionerDelegate : Rectangle {
+ width: 40
+ height: 40
+
+ required property int index
+ property int lightness: index + 1
+ color: Qt.rgba(0.8 / lightness, 0.8 / lightness, 0.8 / lightness, 1.0)
+ Text {
+ text: parent.lightness
+ color: "white"
+ font.pixelSize: 18
+ anchors.centerIn: parent
+ }
+ }
+
+ component ViewDelegate : Item {
+ id: delegateItem
+ required property int index
+ width: (listView.effectiveLayoutDirection === Qt.LeftToRight ? (index === 48 - 1) : (index === 0)) ? 40 : 50
+ Rectangle {
+ width: 40; height: 40
+ color: Qt.rgba(0.5 + (48 - delegateItem.index) * Math.random() / 48,
+ 0.3 + delegateItem.index * Math.random() / 48,
+ 0.3 * Math.random(),
+ 1.0)
+ Text {
+ text: delegateItem.index + 1
+ color: "white"
+ font.pixelSize: 18
+ anchors.centerIn: parent
+ }
+ }
+ }
+}
+