summaryrefslogtreecommitdiffstats
path: root/tests/manual/qmlmultitest/qml
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2015-10-20 13:18:59 +0300
committerMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2015-10-22 10:08:51 +0000
commit31f9c57bc50ae053cfaf039a1dfdb128e2494458 (patch)
tree316138cb73c49877f5a80a8496c2f1b737122fb5 /tests/manual/qmlmultitest/qml
parent4162ddeb02ee41fd4217d7f3d93d45cab3313ba8 (diff)
Fix issues with COIN builds
-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ää <tomi.korpipaa@theqtcompany.com>
Diffstat (limited to 'tests/manual/qmlmultitest/qml')
-rw-r--r--tests/manual/qmlmultitest/qml/qmlmultitest/Data.qml72
-rw-r--r--tests/manual/qmlmultitest/qml/qmlmultitest/NewButton.qml55
-rw-r--r--tests/manual/qmlmultitest/qml/qmlmultitest/main.qml251
3 files changed, 378 insertions, 0 deletions
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"
+ }
+ }
+}