diff options
Diffstat (limited to 'tests/auto/qmltest')
-rw-r--r-- | tests/auto/qmltest/listview/data/MultiDelegate.qml | 106 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/data/MultiDelegate2.qml | 101 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/data/logo.png | bin | 0 -> 1478 bytes | |||
-rw-r--r-- | tests/auto/qmltest/listview/listview.pro | 1 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/tst_listview.qml | 51 |
5 files changed, 259 insertions, 0 deletions
diff --git a/tests/auto/qmltest/listview/data/MultiDelegate.qml b/tests/auto/qmltest/listview/data/MultiDelegate.qml new file mode 100644 index 0000000000..b9640c18b4 --- /dev/null +++ b/tests/auto/qmltest/listview/data/MultiDelegate.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQml.Models 2.12 +import Qt.labs.qmlmodels 1.0 + +ListView { + width: 400 + height: 400 + model: ListModel { + ListElement { dataType: "rect"; color: "red" } + ListElement { dataType: "image"; source: "logo.png" } + ListElement { dataType: "text"; text: "Hello" } + ListElement { dataType: "text"; text: "World" } + ListElement { dataType: "rect"; color: "green" } + ListElement { dataType: "image"; source: "logo.png" } + ListElement { dataType: "rect"; color: "blue" } + ListElement { dataType: "" } + } + + delegate: DelegateChooser { + role: "dataType" + DelegateChoice { + roleValue: "image" + delegate: Image { + width: parent.width + height: 50 + fillMode: Image.PreserveAspectFit + source: model.source + } + } + DelegateChoice { + roleValue: "rect" + delegate: Rectangle { + width: parent.width + height: 50 + color: model.color + } + } + DelegateChoice { + roleValue: "text" + delegate: Text { + width: parent.width + height: 50 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: model.text + } + } + + DelegateChoice { + delegate: Item { + width: parent.width + height: 50 + } + } + } +} diff --git a/tests/auto/qmltest/listview/data/MultiDelegate2.qml b/tests/auto/qmltest/listview/data/MultiDelegate2.qml new file mode 100644 index 0000000000..f623204b98 --- /dev/null +++ b/tests/auto/qmltest/listview/data/MultiDelegate2.qml @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQml.Models 2.12 +import Qt.labs.qmlmodels 1.0 + +ListView { + width: 400 + height: 400 + model: 8 + + delegate: DelegateChooser { + DelegateChoice { + index: 0 + delegate: Item { + property string choiceType: "1" + width: parent.width + height: 50 + } + } + DelegateChoice { + index: 1 + delegate: Item { + property string choiceType: "2" + width: parent.width + height: 50 + } + } + DelegateChoice { + index: 2 + delegate: Item { + property string choiceType: "3" + width: parent.width + height: 50 + } + } + DelegateChoice { + index: 5 + delegate: Item { + property string choiceType: "3" + width: parent.width + height: 50 + } + } + DelegateChoice { + delegate: Item { + property string choiceType: "4" + width: parent.width + height: 50 + } + } + } +} diff --git a/tests/auto/qmltest/listview/data/logo.png b/tests/auto/qmltest/listview/data/logo.png Binary files differnew file mode 100644 index 0000000000..d75936b007 --- /dev/null +++ b/tests/auto/qmltest/listview/data/logo.png diff --git a/tests/auto/qmltest/listview/listview.pro b/tests/auto/qmltest/listview/listview.pro index a7938e7003..b942729ffa 100644 --- a/tests/auto/qmltest/listview/listview.pro +++ b/tests/auto/qmltest/listview/listview.pro @@ -1 +1,2 @@ CONFIG += qmltestcase +DISTFILES += $$PWD/tst_listview.qml $$files($$PWD/data/*.qml) diff --git a/tests/auto/qmltest/listview/tst_listview.qml b/tests/auto/qmltest/listview/tst_listview.qml index f7a34cbce2..5e9bb22e8e 100644 --- a/tests/auto/qmltest/listview/tst_listview.qml +++ b/tests/auto/qmltest/listview/tst_listview.qml @@ -50,6 +50,7 @@ import QtQuick 2.1 import QtTest 1.1 +import "data" Item { id: top @@ -204,6 +205,14 @@ Item { ListElement { component: "data/asynclistviewloader.qml" } } + MultiDelegate { + id: multiDelegate + } + + MultiDelegate2 { + id: multiDelegate2 + } + TestCase { name: "ListView" when: windowShown @@ -363,5 +372,47 @@ Item { function test_viewWithAction() { compare(viewWithActionModel.funcResult, "one") } + + function test_multipleDelegates_data() { + return [ + { y: 25, type: "Rectangle", value: "red" }, + { y: 75, type: "Image", value: Qt.resolvedUrl("data/logo.png") }, + { y: 125, type: "Text", value: "Hello" }, + { y: 175, type: "Text", value: "World" }, + { y: 225, type: "Rectangle", value: "green" }, + { y: 275, type: "Image", value: Qt.resolvedUrl("data/logo.png") }, + { y: 325, type: "Rectangle", value: "blue" }, + { y: 375, type: "Item", value: "" } + ] + } + + function test_multipleDelegates(row) { + var delegate = multiDelegate.itemAt(10, row.y) + verify(delegate.toString().includes(row.type)) + switch (row.type) { + case "Rectangle": verify(Qt.colorEqual(delegate.color, row.value)); break + case "Text": compare(delegate.text, row.value); break + case "Image": compare(delegate.source, row.value); break + case "Item": break + } + } + + function test_multipleDelegates2_data() { + return [ + { y: 25, type: "1" }, + { y: 75, type: "2" }, + { y: 125, type: "3" }, + { y: 175, type: "4" }, + { y: 225, type: "4" }, + { y: 275, type: "3" }, + { y: 325, type: "4" }, + { y: 375, type: "4" } + ] + } + + function test_multipleDelegates2(row) { + var delegate = multiDelegate2.itemAt(10, row.y) + compare(delegate.choiceType, row.type) + } } } |