From 31f9c57bc50ae053cfaf039a1dfdb128e2494458 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 20 Oct 2015 13:18:59 +0300 Subject: Fix issues with COIN builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Fix miscellaneous compile errors -Move manual tests to manual folder and enable export of autotests -Added widgets requirement -Fixed autotests -Fixed renderer and controller synchronization in QML case -Treat fallback Mesa as ES2 similar to setting AA_UseSoftwareOpenGL Change-Id: If6619733725d079e339bef16262e5ea1450ab20f Reviewed-by: Tomi Korpipää --- .../manual/qmlmultitest/qml/qmlmultitest/Data.qml | 72 ++++++ .../qmlmultitest/qml/qmlmultitest/NewButton.qml | 55 +++++ .../manual/qmlmultitest/qml/qmlmultitest/main.qml | 251 +++++++++++++++++++++ 3 files changed, 378 insertions(+) create mode 100644 tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml create mode 100644 tests/manual/qmlmultitest/qml/qmlmultitest/NewButton.qml create mode 100644 tests/manual/qmlmultitest/qml/qmlmultitest/main.qml (limited to 'tests/manual/qmlmultitest/qml') diff --git a/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml b/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml new file mode 100644 index 00000000..0de6f309 --- /dev/null +++ b/tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml @@ -0,0 +1,72 @@ +/****************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Data Visualization module. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +******************************************************************************/ + +import QtQuick 2.1 + +Item { + property alias sharedData: dataModel + + ListModel { + id: dataModel + ListElement{ coords: "0,0"; data: "20.0/10.0/4.75"; } + ListElement{ coords: "1,0"; data: "21.1/10.3/3.00"; } + ListElement{ coords: "2,0"; data: "22.5/10.7/1.24"; } + ListElement{ coords: "3,0"; data: "24.0/10.5/2.53"; } + ListElement{ coords: "0,1"; data: "20.2/11.2/3.55"; } + ListElement{ coords: "1,1"; data: "21.3/11.5/3.03"; } + ListElement{ coords: "2,1"; data: "22.6/11.7/3.46"; } + ListElement{ coords: "3,1"; data: "23.4/11.5/4.12"; } + ListElement{ coords: "0,2"; data: "20.2/12.3/3.37"; } + ListElement{ coords: "1,2"; data: "21.1/12.4/2.98"; } + ListElement{ coords: "2,2"; data: "22.5/12.1/3.33"; } + ListElement{ coords: "3,2"; data: "23.3/12.7/3.23"; } + ListElement{ coords: "0,3"; data: "20.7/13.3/5.34"; } + ListElement{ coords: "1,3"; data: "21.5/13.2/4.54"; } + ListElement{ coords: "2,3"; data: "22.4/13.6/4.65"; } + ListElement{ coords: "3,3"; data: "23.2/13.4/6.67"; } + ListElement{ coords: "0,4"; data: "20.6/15.0/6.01"; } + ListElement{ coords: "1,4"; data: "21.3/14.6/5.83"; } + ListElement{ coords: "2,4"; data: "22.5/14.8/7.32"; } + ListElement{ coords: "3,4"; data: "23.7/14.3/6.90"; } + + ListElement{ coords: "0,0"; data: "40.0/30.0/14.75"; } + ListElement{ coords: "1,0"; data: "41.1/30.3/13.00"; } + ListElement{ coords: "2,0"; data: "42.5/30.7/11.24"; } + ListElement{ coords: "3,0"; data: "44.0/30.5/12.53"; } + ListElement{ coords: "0,1"; data: "40.2/31.2/13.55"; } + ListElement{ coords: "1,1"; data: "41.3/31.5/13.03"; } + ListElement{ coords: "2,1"; data: "42.6/31.7/13.46"; } + ListElement{ coords: "3,1"; data: "43.4/31.5/14.12"; } + ListElement{ coords: "0,2"; data: "40.2/32.3/13.37"; } + ListElement{ coords: "1,2"; data: "41.1/32.4/12.98"; } + ListElement{ coords: "2,2"; data: "42.5/32.1/13.33"; } + ListElement{ coords: "3,2"; data: "43.3/32.7/13.23"; } + ListElement{ coords: "0,3"; data: "40.7/33.3/15.34"; } + ListElement{ coords: "1,3"; data: "41.5/33.2/14.54"; } + ListElement{ coords: "2,3"; data: "42.4/33.6/14.65"; } + ListElement{ coords: "3,3"; data: "43.2/33.4/16.67"; } + ListElement{ coords: "0,4"; data: "40.6/35.0/16.01"; } + ListElement{ coords: "1,4"; data: "41.3/34.6/15.83"; } + ListElement{ coords: "2,4"; data: "42.5/34.8/17.32"; } + ListElement{ coords: "3,4"; data: "43.7/34.3/16.90"; } + } +} + diff --git a/tests/manual/qmlmultitest/qml/qmlmultitest/NewButton.qml b/tests/manual/qmlmultitest/qml/qmlmultitest/NewButton.qml new file mode 100644 index 00000000..0f9a7a5b --- /dev/null +++ b/tests/manual/qmlmultitest/qml/qmlmultitest/NewButton.qml @@ -0,0 +1,55 @@ +/****************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Data Visualization module. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +******************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Controls 1.0 +import QtQuick.Controls.Styles 1.0 + +Item { + id: newbutton + + property alias text: buttonText.text + + signal clicked + + implicitWidth: buttonText.implicitWidth + 5 + implicitHeight: buttonText.implicitHeight + 10 + + Button { + id: buttonText + width: parent.width + height: parent.height + + style: ButtonStyle { + label: Component { + Text { + text: buttonText.text + clip: true + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + anchors.fill: parent + } + } + } + onClicked: newbutton.clicked() + } +} diff --git a/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml b/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml new file mode 100644 index 00000000..410594fe --- /dev/null +++ b/tests/manual/qmlmultitest/qml/qmlmultitest/main.qml @@ -0,0 +1,251 @@ +/****************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Data Visualization module. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +******************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Layouts 1.0 +import QtDataVisualization 1.1 +import "." + +Rectangle { + id: mainView + width: 800 + height: 600 + + Data { + id: data + } + + GridLayout { + id: gridLayout + columns: 2 + Layout.fillHeight: true + Layout.fillWidth: true + anchors.top: mainView.top + anchors.bottom: mainView.bottom + anchors.left: mainView.left + anchors.right: mainView.right + + Rectangle { + Layout.fillHeight: true + Layout.fillWidth: true + border.color: surfaceGraph.theme.gridLineColor + border.width: 2 + + Surface3D { + id: surfaceGraph + anchors.fill: parent + anchors.margins: parent.border.width + theme: Theme3D { + type: Theme3D.ThemePrimaryColors + font.pointSize: 60 + } + scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh + + Surface3DSeries { + itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel" + ItemModelSurfaceDataProxy { + id: surfaceProxy + itemModel: data.sharedData + // The surface data points are not neatly lined up in rows and columns, + // so we define explicit row and column roles. + rowRole: "coords" + columnRole: "coords" + xPosRole: "data" + zPosRole: "data" + yPosRole: "data" + rowRolePattern: /(\d),\d/ + columnRolePattern: /(\d),(\d)/ + xPosRolePattern: /^([asd]*)([fgh]*)([jkl]*)[^\/]*\/([^\/]*)\/.*$/ + yPosRolePattern: /^([^\/]*)\/([^\/]*)\/(.*)$/ + zPosRolePattern: /^([asd]*)([qwe]*)([tyu]*)([fgj]*)([^\/]*)\/[^\/]*\/.*$/ + rowRoleReplace: "\\1" + columnRoleReplace: "\\2" + xPosRoleReplace: "\\4" + yPosRoleReplace: "\\3" + zPosRoleReplace: "\\5" + } + } + } + } + + // We'll use one grid cell for buttons + Rectangle { + Layout.fillHeight: true + Layout.fillWidth: true + + GridLayout { + anchors.right: parent.right + anchors.left: parent.left + anchors.top: parent.top + anchors.bottom: parent.bottom + columns: 2 + + NewButton { + Layout.minimumWidth: parent.width / 2 + Layout.fillHeight: true + Layout.fillWidth: true + text: "Clear Selections" + onClicked: clearSelections() // call a helper function to keep button itself simpler + } + + NewButton { + Layout.minimumWidth: parent.width / 2 + Layout.fillHeight: true + Layout.fillWidth: true + text: "Quit" + onClicked: Qt.quit(0); + } + + NewButton { + Layout.fillHeight: true + Layout.fillWidth: true + text: "Reset Cameras" + onClicked: resetCameras() // call a helper function to keep button itself simpler + } + + NewButton { + id: mmbButton + Layout.fillHeight: true + Layout.fillWidth: true + text: "MMB: Last" + onClicked: changeMMB() // call a helper function to keep button itself simpler + } + } + } + + Rectangle { + Layout.fillHeight: true + Layout.fillWidth: true + border.color: scatterGraph.theme.gridLineColor + border.width: 2 + + Scatter3D { + id: scatterGraph + anchors.fill: parent + anchors.margins: parent.border.width + theme: Theme3D { + type: Theme3D.ThemeDigia + font.pointSize: 60 + } + scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh + + Scatter3DSeries { + itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel" + mesh: Abstract3DSeries.MeshCube + ItemModelScatterDataProxy { + id: scatterProxy + itemModel: data.sharedData + // Mapping model roles to scatter series item coordinates. + xPosRole: "data" + zPosRole: "data" + yPosRole: "data" + rotationRole: "coords" + xPosRolePattern: /^([asd]*)([fgh]*)([jkl]*)[^\/]*\/([^\/]*)\/.*$/ + yPosRolePattern: /^([^\/]*)\/([^\/]*)\/(.*)$/ + zPosRolePattern: /^([asd]*)([qwe]*)([tyu]*)([fgj]*)([^\/]*)\/[^\/]*\/.*$/ + rotationRolePattern: /(\d)\,(\d)/ + xPosRoleReplace: "\\4" + yPosRoleReplace: "\\3" + zPosRoleReplace: "\\5" + rotationRoleReplace: "@\\2\\1,0,1,0" + } + } + } + } + + Rectangle { + Layout.fillHeight: true + Layout.fillWidth: true + border.color: barGraph.theme.gridLineColor + border.width: 2 + + Bars3D { + id: barGraph + anchors.fill: parent + anchors.margins: parent.border.width + theme: Theme3D { + type: Theme3D.ThemeQt + font.pointSize: 60 + } + selectionMode: AbstractGraph3D.SelectionItemAndRow | AbstractGraph3D.SelectionSlice + scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeftHigh + + Bar3DSeries { + itemLabelFormat: "@seriesName: @valueLabel" + name: "Population density" + + ItemModelBarDataProxy { + id: barProxy + itemModel: data.sharedData + // Mapping model roles to bar series rows, columns, and values. + rowRole: "coords" + columnRole: "coords" + valueRole: "data" + rotationRole: "coords" + rowRolePattern: /(\d),\d/ + columnRolePattern: /(\d),(\d)/ + valueRolePattern: /^([^\/]*)\/([^\/]*)\/(.*)$/ + rotationRolePattern: /(\d)\,(\d)/ + rowRoleReplace: "\\1" + columnRoleReplace: "\\2" + valueRoleReplace: "\\3" + rotationRoleReplace: "\\2\\1" + } + } + } + } + } + + function clearSelections() { + barGraph.clearSelection() + scatterGraph.clearSelection() + surfaceGraph.clearSelection() + } + + function resetCameras() { + surfaceGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh + scatterGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh + barGraph.scene.activeCamera.cameraPreset = Camera3D.CameraPresetIsometricLeftHigh + surfaceGraph.scene.activeCamera.zoomLevel = 100.0 + scatterGraph.scene.activeCamera.zoomLevel = 100.0 + barGraph.scene.activeCamera.zoomLevel = 100.0 + } + + function changeMMB() { + if (barProxy.multiMatchBehavior === ItemModelBarDataProxy.MMBLast) { + barProxy.multiMatchBehavior = ItemModelBarDataProxy.MMBAverage + surfaceProxy.multiMatchBehavior = ItemModelSurfaceDataProxy.MMBAverage + mmbButton.text = "MMB: Average" + } else if (barProxy.multiMatchBehavior === ItemModelBarDataProxy.MMBAverage) { + barProxy.multiMatchBehavior = ItemModelBarDataProxy.MMBCumulative + surfaceProxy.multiMatchBehavior = ItemModelSurfaceDataProxy.MMBCumulativeY + mmbButton.text = "MMB: Cumulative" + } else if (barProxy.multiMatchBehavior === ItemModelBarDataProxy.MMBCumulative) { + barProxy.multiMatchBehavior = ItemModelBarDataProxy.MMBFirst + surfaceProxy.multiMatchBehavior = ItemModelSurfaceDataProxy.MMBFirst + mmbButton.text = "MMB: First" + } else { + barProxy.multiMatchBehavior = ItemModelBarDataProxy.MMBLast + surfaceProxy.multiMatchBehavior = ItemModelSurfaceDataProxy.MMBLast + mmbButton.text = "MMB: Last" + } + } +} -- cgit v1.2.3