aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml')
-rw-r--r--tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml b/tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml
new file mode 100644
index 0000000000..7667aa950d
--- /dev/null
+++ b/tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml
@@ -0,0 +1,52 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Window
+import QtQuick.Controls
+
+Item {
+ id: __layoutChooser
+ property var chosenLayout: undefined
+ property list<bool> criteria: []
+ property list<var> layoutChoices: []
+
+ implicitWidth: chosenLayout.implicitWidth
+ implicitHeight: chosenLayout.implicitHeight
+
+ onCriteriaChanged: {
+ console.log("Criterias:", criteria)
+ showAndHide()
+ }
+
+ onLayoutChoicesChanged: {
+ console.log("Layouts:", layoutChoices)
+ showAndHide()
+ }
+
+ function showAndHide() {
+ const oldLayout = chosenLayout
+
+ let i = 0
+ for (; i < criteria.length; i++) {
+ if (criteria[i])
+ break
+ }
+
+ console.log("Choosing layout", i)
+
+ if (i < layoutChoices.length)
+ chosenLayout = layoutChoices[i]
+ else if (layoutChoices.length > 0)
+ chosenLayout = layoutChoices[0]
+ else
+ return
+
+ for (i = 0; i < layoutChoices.length; i++) {
+ layoutChoices[i].visible = false
+ }
+ chosenLayout.visible = true
+ chosenLayout.ensurePolished()
+ }
+}