diff options
Diffstat (limited to 'tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml')
-rw-r--r-- | tests/manual/quicklayouts/layoutItemProxy/LayoutChooser.qml | 52 |
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() + } +} |