diff options
Diffstat (limited to 'tests/auto/quickcontrols2/controls/data/tst_selectionrectangle.qml')
-rw-r--r-- | tests/auto/quickcontrols2/controls/data/tst_selectionrectangle.qml | 311 |
1 files changed, 0 insertions, 311 deletions
diff --git a/tests/auto/quickcontrols2/controls/data/tst_selectionrectangle.qml b/tests/auto/quickcontrols2/controls/data/tst_selectionrectangle.qml deleted file mode 100644 index 13ddf00f..00000000 --- a/tests/auto/quickcontrols2/controls/data/tst_selectionrectangle.qml +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 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 -import QtTest -import QtQuick.Controls -import Qt.labs.qmlmodels - -TestCase { - id: testCase - width: 200 - height: 200 - visible: true - when: windowShown - name: "SelectionRectangle" - - property real cellWidth: 50 - property real cellHeight: 20 - property Item handle: null - property bool handleWasDragged: false - - Component { - id: handleComp - Rectangle { - id: handle - width: 28 - height: width - radius: width / 2 - property bool dragging: SelectionRectangle.dragging - property Item control: SelectionRectangle.control - border.width: 1 - border.color: "red" - visible: SelectionRectangle.control.active - - SelectionRectangle.onDraggingChanged: { - if (SelectionRectangle.dragging) - testCase.handleWasDragged = true - } - - Component.onCompleted: testCase.handle = handle - } - } - - Component { - id: tableviewComp - TableView { - id: tableView - clip: true - anchors.fill: parent - - model: TableModel { - TableModelColumn { display: "c1" } - TableModelColumn { display: "c2" } - TableModelColumn { display: "c3" } - TableModelColumn { display: "c4" } - rows: [ - { "c1": "v1", "c2":"v2", "c3":"v3", "c4": "v4" }, - { "c1": "v1", "c2":"v2", "c3":"v3", "c4": "v4" }, - { "c1": "v1", "c2":"v2", "c3":"v3", "c4": "v4" }, - { "c1": "v1", "c2":"v2", "c3":"v3", "c4": "v4" }, - ] - } - - delegate: Rectangle { - required property bool selected - implicitWidth: cellWidth - implicitHeight: cellHeight - color: selected ? "lightblue" : "gray" - Text { text: "cell" } - } - - selectionModel: ItemSelectionModel { - model: tableView.model - } - - property alias selectionRectangle: selectionRectangle - SelectionRectangle { - id: selectionRectangle - target: tableView - } - } - - } - - Component { - id: signalSpy - SignalSpy { } - } - - function test_set_target() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - compare(selectionRectangle.target, tableView) - - selectionRectangle.target = null - compare(selectionRectangle.target, null) - - selectionRectangle.target = tableView - compare(selectionRectangle.target, tableView) - } - - function test_set_selectionMode() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - // Default selection mode should be Auto - compare(selectionRectangle.selectionMode, SelectionRectangle.Auto) - - selectionRectangle.selectionMode = SelectionRectangle.Drag - compare(selectionRectangle.selectionMode, SelectionRectangle.Drag) - - selectionRectangle.selectionMode = SelectionRectangle.PressAndHold - compare(selectionRectangle.selectionMode, SelectionRectangle.PressAndHold) - - selectionRectangle.selectionMode = SelectionRectangle.Auto - compare(selectionRectangle.selectionMode, SelectionRectangle.Auto) - } - - function test_set_handles() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - selectionRectangle.topLeftHandle = null - compare(selectionRectangle.topLeftHandle, null) - - selectionRectangle.bottomRightHandle = null - compare(selectionRectangle.bottomRightHandle, null) - - selectionRectangle.topLeftHandle = handleComp - compare(selectionRectangle.topLeftHandle, handleComp) - - selectionRectangle.bottomRightHandle = handleComp - compare(selectionRectangle.bottomRightHandle, handleComp) - } - - function test_drag() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - selectionRectangle.selectionMode = SelectionRectangle.Drag - - let activeSpy = signalSpy.createObject(selectionRectangle, {target: selectionRectangle, signalName: "activeChanged"}) - let draggingSpy = signalSpy.createObject(selectionRectangle, {target: selectionRectangle, signalName: "draggingChanged"}) - verify(activeSpy.valid) - verify(draggingSpy.valid) - - verify(!tableView.selectionModel.hasSelection) - mouseDrag(tableView, 1, 1, (cellWidth * 2) - 2, 1, Qt.LeftButton) - verify(tableView.selectionModel.hasSelection) - compare(tableView.selectionModel.selectedIndexes.length, 2) - verify(tableView.selectionModel.isSelected(tableView.model.index(0, 0))) - verify(tableView.selectionModel.isSelected(tableView.model.index(0, 1))) - - compare(activeSpy.count, 1) - compare(draggingSpy.count, 2) - - // Remove selection - mouseClick(tableView, 1, 1, Qt.LeftButton) - verify(!tableView.selectionModel.hasSelection) - compare(draggingSpy.count, 2) - compare(activeSpy.count, 2) - - // Ensure that a press and hold doesn't start a selection - mousePress(tableView, 1, 1, Qt.LeftButton) - mousePress(tableView, 1, 1, Qt.LeftButton, Qt.NoModifier, 1000) - verify(!tableView.selectionModel.hasSelection) - } - - function test_pressAndHold() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - selectionRectangle.selectionMode = SelectionRectangle.PressAndHold - - let activeSpy = signalSpy.createObject(selectionRectangle, {target: selectionRectangle, signalName: "activeChanged"}) - let draggingSpy = signalSpy.createObject(selectionRectangle, {target: selectionRectangle, signalName: "draggingChanged"}) - verify(activeSpy.valid) - verify(draggingSpy.valid) - - verify(!tableView.selectionModel.hasSelection) - // Do a press and hold - mousePress(tableView, 1, 1, Qt.LeftButton) - mousePress(tableView, 1, 1, Qt.LeftButton, Qt.NoModifier, 1000) - verify(tableView.selectionModel.hasSelection) - compare(tableView.selectionModel.selectedIndexes.length, 1) - verify(tableView.selectionModel.isSelected(tableView.model.index(0, 0))) - - compare(draggingSpy.count, 0) - compare(activeSpy.count, 1) - - // Remove selection - mouseClick(tableView, 1, 1, Qt.LeftButton) - verify(!tableView.selectionModel.hasSelection) - compare(draggingSpy.count, 0) - compare(activeSpy.count, 2) - - // Ensure that a drag doesn't start a selection - mouseDrag(tableView, 1, 1, (cellWidth * 2) - 2, 1, Qt.LeftButton) - verify(!tableView.selectionModel.hasSelection) - } - - function test_handleDragTopLeft() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - selectionRectangle.selectionMode = SelectionRectangle.Drag - - verify(!tableView.selectionModel.hasSelection) - // Select four cells in the middle - mouseDrag(tableView, cellWidth + 1, cellHeight + 1, (cellWidth * 2) - 2, (cellHeight * 2) - 2, Qt.LeftButton) - compare(tableView.selectionModel.selectedIndexes.length, 4) - for (var x = 1; x < 3; ++x) { - for (var y = 1; y < 3; ++y) { - verify(tableView.selectionModel.isSelected(tableView.model.index(x, y))) - } - } - - // Drag on the top left handle, so that the selection extends to cell 0, 0 - mouseDrag(tableView, cellWidth, cellHeight, -cellWidth / 2, -cellHeight / 2, Qt.LeftButton) - compare(tableView.selectionModel.selectedIndexes.length, 9) - for (x = 0; x < 3; ++x) { - for (y = 0; y < 3; ++y) { - verify(tableView.selectionModel.isSelected(tableView.model.index(x, y))) - } - } - } - - function test_handleDragBottomRight() { - let tableView = createTemporaryObject(tableviewComp, testCase) - verify(tableView) - let selectionRectangle = tableView.selectionRectangle - verify(selectionRectangle) - - selectionRectangle.selectionMode = SelectionRectangle.Drag - - verify(!tableView.selectionModel.hasSelection) - // Select four cells in the middle - mouseDrag(tableView, cellWidth + 1, cellHeight + 1, (cellWidth * 2) - 2, (cellHeight * 2) - 2, Qt.LeftButton) - compare(tableView.selectionModel.selectedIndexes.length, 4) - for (var x = 1; x < 3; ++x) { - for (var y = 1; y < 3; ++y) { - verify(tableView.selectionModel.isSelected(tableView.model.index(x, y))) - } - } - - // Drag on the bottom right handle, so that the selection shrinks to cell 1, 1 - mouseDrag(tableView, cellWidth * 2, cellHeight * 2, -cellWidth / 2, -cellHeight / 2, Qt.LeftButton) - compare(tableView.selectionModel.selectedIndexes.length, 1) - verify(tableView.selectionModel.isSelected(tableView.model.index(1, 1))) - } -} |