From 0b191307ac22b14175f846e06e3356ca00099c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kera=CC=88nen=20Pasi?= Date: Tue, 24 Sep 2013 11:43:16 +0300 Subject: Added abstract baseclass for declarative components. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Icdeb487388bb9c36cfbb6d7077de052434ec3fe3 Reviewed-by: Tomi Korpipää --- ...tdatavisualization-qml-abstractdeclarative.qdoc | 79 +++++++++ .../doc/src/qtdatavisualization-qml-bars3d.qdoc | 133 +++++++++++++++ .../doc/src/qtdatavisualization-qml-scatter3d.qdoc | 102 +++++++++++ .../doc/src/qtdatavisualization-qml-surface3d.qdoc | 87 ++++++++++ src/datavisualization/engine/q3dbars.cpp | 168 ------------------ src/datavisualization/engine/q3dscatter.cpp | 137 --------------- src/datavisualization/engine/q3dsurface.cpp | 110 ------------ src/datavisualizationqml2/abstractdeclarative.cpp | 189 +++++++++++++++++++++ src/datavisualizationqml2/abstractdeclarative_p.h | 115 +++++++++++++ .../datavisualizationqml2.pro | 6 +- .../datavisualizationqml2_plugin.cpp | 2 + .../datavisualizationqml2_plugin.h | 1 + src/datavisualizationqml2/declarativebars.cpp | 162 +----------------- src/datavisualizationqml2/declarativebars_p.h | 94 +--------- src/datavisualizationqml2/declarativescatter.cpp | 157 +---------------- src/datavisualizationqml2/declarativescatter_p.h | 81 +-------- src/datavisualizationqml2/declarativesurface.cpp | 147 +--------------- src/datavisualizationqml2/declarativesurface_p.h | 62 +------ 18 files changed, 744 insertions(+), 1088 deletions(-) create mode 100644 src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc create mode 100644 src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc create mode 100644 src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc create mode 100644 src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc create mode 100644 src/datavisualizationqml2/abstractdeclarative.cpp create mode 100644 src/datavisualizationqml2/abstractdeclarative_p.h (limited to 'src') diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc new file mode 100644 index 00000000..c132e251 --- /dev/null +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +/*! + \qmltype AbstractDeclarative + \inmodule QtDataVisualization + + This type is the base class for all 3D visualizations in Qt Quick 2. + + It resides in the data visualization module that can be imported like this: + + \snippet doc_src_qmldatavisualization.cpp 0 + + Note that this type is uncreatable, but contains properties that are shared between + the 3D visualizations. + + + \sa Bars3D, Scatter3D, Surface3D, {Qt Data Visualization C++ Classes} + */ + +/*! + \qmlproperty AbstractDeclarative.SelectionMode AbstractDeclarative::selectionMode + Active selection mode in the visualization. + */ +/*! + \qmlproperty AbstractDeclarative.LabelTransparency AbstractDeclarative::labelTransparency + Label transparency. + */ + +/*! + \qmlproperty AbstractDeclarative.ShadowQuality AbstractDeclarative::shadowQuality + Shadow quality. + */ + +/*! + \qmlproperty AbstractDeclarative.CameraPreset AbstractDeclarative::cameraPreset + Camera preset. + */ + +/*! + \qmlproperty AbstractDeclarative.ColorTheme AbstractDeclarative::theme + Theme of the graph. Theme affects visualization colors, label colors, text color, background color, window + color and grid color. Lighting is also adjusted by themes. + */ + +/*! + \qmlproperty font AbstractDeclarative::font + Font used for labels. + */ + +/*! + \qmlproperty bool AbstractDeclarative::gridVisible + Grid visibility. If false, grid lines are not drawn. + */ + +/*! + \qmlproperty bool AbstractDeclarative::backgroundVisible + Background visibility. If false, background is not drawn. + */ + +/*! + \qmlproperty string AbstractDeclarative::itemLabelFormat + Label format of single item labels, e.g. a selected datapoint. + */ diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc new file mode 100644 index 00000000..b36d6f83 --- /dev/null +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-bars3d.qdoc @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +/*! + * \qmltype Bars3D + * \inherits AbstractDeclarative + * \inmodule QtDataVisualization + * + * This type enables developers to render bar graphs in 3D with Qt Quick 2. + * + * You will need to import data visualization module to use this type: + * + * \snippet doc_src_qmldatavisualization.cpp 0 + * + * After that you can use Bars3D in your qml files: + * + * \snippet doc_src_qmldatavisualization.cpp 1 + * + * See \l{Qt Quick 2 Barchart Example} for more thorough usage example. + * + * \sa ItemModelBarDataProxy, Scatter3D, Surface3D, {Qt Data Visualization C++ Classes} + */ + +/*! + * \qmlmethod void Bars3D::setBarColor(const QColor &baseColor, bool uniform) + * Set bar color using your own color. \a baseColor sets the base color of a bar. The \a uniform + * -flag is used to define if color needs to be uniform throughout bar's length, or will the colors + * be applied by height, starting with dark at the bottom. It is \c true by default. + * + * Calling this method overrides colors from theme. + * + * \sa AbstractDeclarative::theme + * + * \warning This method is subject to change. + */ + +/*! + * \qmlproperty BarDataProxy Bars3D::dataProxy + * The active data proxy. + * + * If a proxy is not given, a temporary default proxy is created and activated. + * This temporary proxy is destroyed if another proxy is explicitly set active via this property. + */ + +/*! + * \qmlproperty CategoryAxis3D Bars3D::rowAxis + * A user-defined row axis. + * + * If an axis is not given, a temporary default axis with no labels is created. + * This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + * \qmlproperty ValueAxis3D Bars3D::valueAxis + * A user-defined value axis. + * + * If an axis is not given, a temporary default axis with no labels and automatically adjusting + * range is created. + * This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + * \qmlproperty CategoryAxis3D Bars3D::columnAxis + * A user-defined column axis. + * + * If an axis is not given, a temporary default axis with no labels is created. + * This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + + +/*! + * \qmlproperty Bars3D.MeshStyle Bars3D::barType + * Bar object type. + */ + +/*! + * \qmlproperty real Bars3D::barThickness + * Bar thickness ratio between X and Z dimensions. 1.0 means bars are as wide as they are deep, 0.5 + * makes them twice as deep as they are wide. + */ + +/*! + * \qmlproperty size Bars3D::barSpacing + * Bar spacing in X and Z dimensions. + */ + +/*! + * \qmlproperty bool Bars3D::barSpacingRelative + * Relative or absolute bar spacing. + */ + +/*! + * \qmlproperty bool Bars3D::barSmoothingEnabled + * Bar smoothing. If false, bar shading is flat. + */ + +/*! + * \qmlproperty string Bars3D::meshFileName + * Override bar type with a mesh object. + * \note Object needs to be in Wavefront obj format and include vertices, normals and UVs. + * It also needs to be in triangles. + */ + +/*! + * \qmlproperty int Bars3D::rows + * Row count of data window. + */ + +/*! + * \qmlproperty int Bars3D::columns + * Column count of data window. + */ + +/*! + * \qmlproperty point Bars3D::selectedBarPos + * Position of the selected bar in data window. Only one bar can be selected at a time. + * To clear selection, specify an illegal position, e.g. Qt.point(-1.0, -1.0). + */ diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc new file mode 100644 index 00000000..672dd5b7 --- /dev/null +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-scatter3d.qdoc @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +/*! + \qmltype Scatter3D + \inherits AbstractDeclarative + \inmodule QtDataVisualization + + This type enables developers to render scatter graphs in 3D with Qt Quick 2. + + You will need to import data visualization module to use this type: + + \snippet doc_src_qmldatavisualization.cpp 0 + + After that you can use Scatter3D in your qml files: + + \snippet doc_src_qmldatavisualization.cpp 2 + + See \l{Qt Quick 2 Scatter Example} for more thorough usage example. + + \sa ItemModelScatterDataProxy, Bars3D, Surface3D, {Qt Data Visualization C++ Classes} + */ + +/*! + * \qmlmethod void Scatter3D::setObjectColor(const QColor &baseColor, bool uniform) + * Set item color using your own colors. \a baseColor sets the base color of a item. The \a uniform + * -flag is used to define if color needs to be uniform throughout item's length, or will the colors + * be applied by height. It is \c true by default. + * + * Calling this method overrides colors from theme. + * + * \sa AbstractDeclarative::theme + * + * \warning This method is subject to change. + */ + +/*! + \qmlproperty ScatterDataProxy Scatter3D::dataProxy + The active data proxy. + + If a proxy is not given, a temporary default proxy is created and activated. + This temporary proxy is destroyed if another proxy is explicitly set active via this property. + */ + +/*! + \qmlproperty ValueAxis3D Scatter3D::axisX + A user-defined X axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty ValueAxis3D Scatter3D::axisY + A user-defined Y axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty ValueAxis3D Scatter3D::axisZ + A user-defined Z axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty Scatter3D.MeshStyle Scatter3D::objectType + Dot object type. + */ + +/*! + \qmlproperty bool Scatter3D::objectSmoothingEnabled + Dot smoothing. If false, dot shading is flat. + */ + +/*! + \qmlproperty string Scatter3D::meshFileName + Override object type with a mesh object. + \note Object needs to be in Wavefront obj format and include vertices, normals and UVs. + It also needs to be in triangles. + */ diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc new file mode 100644 index 00000000..069fa9e9 --- /dev/null +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +/*! + \qmltype Surface3D + \inherits AbstractDeclarative + \inmodule QtDataVisualization + + This type enables developers to render surface plots in 3D with Qt Quick 2. + + You will need to import data visualization module to use this type: + + \snippet doc_src_qmldatavisualization.cpp 0 + + After that you can use Surface3D in your qml files: + + \snippet doc_src_qmldatavisualization.cpp 3 + + See \l{Qt Quick 2 Surface Example} for more thorough usage example. + + \sa ItemModelSurfaceDataProxy, Bars3D, Scatter3D, {Qt Data Visualization C++ Classes} + */ + +/*! + \qmlproperty SurfaceDataProxy Surface3D::dataProxy + The active data proxy. + + If a proxy is not given, a temporary default proxy is created and activated. + This temporary proxy is destroyed if another proxy is explicitly set active via this property. + */ + +/*! + \qmlproperty ValueAxis3D Surface3D::axisX + A user-defined X axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty ValueAxis3D Surface3D::axisY + A user-defined Y axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty ValueAxis3D Surface3D::axisZ + A user-defined Z axis. + + If an axis is not given, a temporary default axis with no labels and automatically adjusting + range is created. + This temporary axis is destroyed if another axis is explicitly set to same orientation. + */ + +/*! + \qmlproperty bool Surface3D::smoothSurfaceEnabled + Smoothing of surface. If false, shading of the surface is flat. + */ + +/*! + \qmlproperty bool Surface3D::surfaceGridEnabled + Surface grid visibility. If false, no surface grid is drawn. + */ + +/*! + \qmlproperty var Surface3D::gradient + The current surface gradient. Setting this property replaces the previous gradient. + */ diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp index fb46a14c..a4b93840 100644 --- a/src/datavisualization/engine/q3dbars.cpp +++ b/src/datavisualization/engine/q3dbars.cpp @@ -89,174 +89,6 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * \sa Q3DScatter, Q3DSurface, {Qt Data Visualization C++ Classes} */ -/*! - * \qmltype Bars3D - * \instantiates Q3DBars - * - * This type enables developers to render bar graphs in 3D with Qt Quick 2. - * - * You will need to import data visualization module to use this type: - * - * \snippet doc_src_qmldatavisualization.cpp 0 - * - * After that you can use Bars3D in your qml files: - * - * \snippet doc_src_qmldatavisualization.cpp 1 - * - * See \l{Qt Quick 2 Barchart Example} for more thorough usage example. - * - * \sa ItemModelBarDataProxy, Scatter3D, Surface3D, {Qt Data Visualization C++ Classes} - */ - -/*! - * \qmlmethod void Bars3D::setCameraPosition(qreal horizontal, qreal vertical, int distance) - * Move camera to a wanted position based on \a horizontal and \a vertical angles. Angles are limited - * to -180...180 in horizontal direction and either -90...90 or 0...90 in vertical, depending - * on data values. Negative vertical angles are allowed only if there are negative bar values. - * \a distance is adjustable between 10 and 500, being \c 100 by default. - */ - -/*! - * \qmlmethod void Bars3D::setBarColor(const QColor &baseColor, bool uniform) - * Set bar color using your own color. \a baseColor sets the base color of a bar. The \a uniform - * -flag is used to define if color needs to be uniform throughout bar's length, or will the colors - * be applied by height, starting with dark at the bottom. It is \c true by default. - * - * Calling this method overrides colors from theme. - * - * \sa theme - * - * \warning This method is subject to change. - */ - -/*! - * \qmlproperty BarDataProxy Bars3D::dataProxy - * The active data proxy. - * - * If a proxy is not given, a temporary default proxy is created and activated. - * This temporary proxy is destroyed if another proxy is explicitly set active via this property. - */ - -/*! - * \qmlproperty CategoryAxis3D Bars3D::rowAxis - * A user-defined row axis. - * - * If an axis is not given, a temporary default axis with no labels is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty ValueAxis3D Bars3D::valueAxis - * A user-defined value axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty CategoryAxis3D Bars3D::columnAxis - * A user-defined column axis. - * - * If an axis is not given, a temporary default axis with no labels is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty Bars3D.SelectionMode Bars3D::selectionMode - * Bar selection mode. - */ - -/*! - * \qmlproperty Bars3D.LabelTransparency Bars3D::labelTransparency - * Label transparency. - */ - -/*! - * \qmlproperty Bars3D.ShadowQuality Bars3D::shadowQuality - * Shadow quality. - */ - -/*! - * \qmlproperty Bars3D.MeshStyle Bars3D::barType - * Bar object type. - */ - -/*! - * \qmlproperty Bars3D.CameraPreset Bars3D::cameraPreset - * Camera preset. - */ - -/*! - * \qmlproperty Bars3D.ColorTheme Bars3D::theme - * Theme of the graph. Theme affects bar colors, label colors, text color, background color, window - * color and grid color. Lighting is also adjusted by themes. - */ - -/*! - * \qmlproperty real Bars3D::barThickness - * Bar thickness ratio between X and Z dimensions. 1.0 means bars are as wide as they are deep, 0.5 - * makes them twice as deep as they are wide. - */ - -/*! - * \qmlproperty size Bars3D::barSpacing - * Bar spacing in X and Z dimensions. - */ - -/*! - * \qmlproperty bool Bars3D::barSpacingRelative - * Relative or absolute bar spacing. - */ - -/*! - * \qmlproperty bool Bars3D::barSmoothingEnabled - * Bar smoothing. If false, bar shading is flat. - */ - -/*! - * \qmlproperty string Bars3D::meshFileName - * Override bar type with a mesh object. - * \note Object needs to be in Wavefront obj format and include vertices, normals and UVs. - * It also needs to be in triangles. - */ - -/*! - * \qmlproperty font Bars3D::font - * Font used for labels. - */ - -/*! - * \qmlproperty bool Bars3D::gridVisible - * Grid visibility. If false, grid lines are not drawn. - */ - -/*! - * \qmlproperty bool Bars3D::backgroundVisible - * Background visibility. If false, background is not drawn. - */ - -/*! - * \qmlproperty int Bars3D::rows - * Row count of data window. - */ - -/*! - * \qmlproperty int Bars3D::columns - * Column count of data window. - */ - -/*! - * \qmlproperty string Bars3D::itemLabelFormat - * Label format of single item labels, e.g. a selected bar. - */ - -/*! - * \qmlproperty point Bars3D::selectedBarPos - * Position of the selected bar in data window. Only one bar can be selected at a time. - * To clear selection, specify an illegal position, e.g. Qt.point(-1.0, -1.0). - */ - /*! * Constructs a new 3D bar window. */ diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp index cb06c99f..28c453e3 100644 --- a/src/datavisualization/engine/q3dscatter.cpp +++ b/src/datavisualization/engine/q3dscatter.cpp @@ -80,143 +80,6 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * \sa Q3DBars, Q3DSurface, {Qt Data Visualization C++ Classes} */ -/*! - * \qmltype Scatter3D - * \instantiates Q3DScatter - * - * This type enables developers to render scatter graphs in 3D with Qt Quick 2. - * - * You will need to import data visualization module to use this type: - * - * \snippet doc_src_qmldatavisualization.cpp 0 - * - * After that you can use Scatter3D in your qml files: - * - * \snippet doc_src_qmldatavisualization.cpp 2 - * - * See \l{Qt Quick 2 Scatter Example} for more thorough usage example. - * - * \sa ItemModelScatterDataProxy, Bars3D, Surface3D, {Qt Data Visualization C++ Classes} - */ - -/*! - * \qmlmethod void Scatter3D::setCameraPosition(qreal horizontal, qreal vertical, int distance) - * Move camera to a wanted position based on \a horizontal and \a vertical angles. Angles are limited - * to -180...180 in horizontal direction and -90...90 in vertical. \a distance is adjustable - * between 10 and 500, being \c 100 by default. - */ - -/*! - * \qmlmethod void Scatter3D::setObjectColor(const QColor &baseColor, bool uniform) - * Set item color using your own colors. \a baseColor sets the base color of a item. The \a uniform - * -flag is used to define if color needs to be uniform throughout item's length, or will the colors - * be applied by height. It is \c true by default. - * - * Calling this method overrides colors from theme. - * - * \sa theme - * - * \warning This method is subject to change. - */ - -/*! - * \qmlproperty ScatterDataProxy Scatter3D::dataProxy - * The active data proxy. - * - * If a proxy is not given, a temporary default proxy is created and activated. - * This temporary proxy is destroyed if another proxy is explicitly set active via this property. - */ - -/*! - * \qmlproperty ValueAxis3D Scatter3D::axisX - * A user-defined X axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty ValueAxis3D Scatter3D::axisY - * A user-defined Y axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty ValueAxis3D Scatter3D::axisZ - * A user-defined Z axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty Scatter3D.SelectionMode Scatter3D::selectionMode - * Dot selection mode. - */ - -/*! - * \qmlproperty Scatter3D.LabelTransparency Scatter3D::labelTransparency - * Label transparency. - */ - -/*! - * \qmlproperty Scatter3D.ShadowQuality Scatter3D::shadowQuality - * Shadow quality. - */ - -/*! - * \qmlproperty Scatter3D.MeshStyle Scatter3D::objectType - * Dot object type. - */ - -/*! - * \qmlproperty Scatter3D.CameraPreset Scatter3D::cameraPreset - * Camera preset. - */ - -/*! - * \qmlproperty Scatter3D.ColorTheme Scatter3D::theme - * Theme of the graph. Theme affects bar colors, label colors, text color, background color, window - * color and grid color. Lighting is also adjusted by themes. - */ - -/*! - * \qmlproperty bool Scatter3D::objectSmoothingEnabled - * Dot smoothing. If false, dot shading is flat. - */ - -/*! - * \qmlproperty string Scatter3D::meshFileName - * Override object type with a mesh object. - * \note Object needs to be in Wavefront obj format and include vertices, normals and UVs. - * It also needs to be in triangles. - */ - -/*! - * \qmlproperty font Scatter3D::font - * Font used for labels. - */ - -/*! - * \qmlproperty bool Scatter3D::gridVisible - * Grid visibility. If false, grid lines are not drawn. - */ - -/*! - * \qmlproperty bool Scatter3D::backgroundVisible - * Background visibility. If false, background is not drawn. - */ - -/*! - * \qmlproperty string Scatter3D::itemLabelFormat - * Label format of single item labels, e.g. a selected bar. - */ - /*! * Constructs a new 3D scatter window. */ diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp index 78ec70d4..c8249399 100644 --- a/src/datavisualization/engine/q3dsurface.cpp +++ b/src/datavisualization/engine/q3dsurface.cpp @@ -92,116 +92,6 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * \sa Q3DBars, Q3DScatter, {Qt Data Visualization C++ Classes} */ -/*! - * \qmltype Surface3D - * \instantiates Q3DSurface - * - * This type enables developers to render surface plots in 3D with Qt Quick 2. - * - * You will need to import data visualization module to use this type: - * - * \snippet doc_src_qmldatavisualization.cpp 0 - * - * After that you can use Surface3D in your qml files: - * - * \snippet doc_src_qmldatavisualization.cpp 3 - * - * See \l{Qt Quick 2 Surface Example} for more thorough usage example. - * - * \sa ItemModelSurfaceDataProxy, Bars3D, Scatter3D, {Qt Data Visualization C++ Classes} - */ - -/*! - * \qmlproperty SurfaceDataProxy Surface3D::dataProxy - * The active data proxy. - * - * If a proxy is not given, a temporary default proxy is created and activated. - * This temporary proxy is destroyed if another proxy is explicitly set active via this property. - */ - -/*! - * \qmlproperty ValueAxis3D Surface3D::axisX - * A user-defined X axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty ValueAxis3D Surface3D::axisY - * A user-defined Y axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty ValueAxis3D Surface3D::axisZ - * A user-defined Z axis. - * - * If an axis is not given, a temporary default axis with no labels and automatically adjusting - * range is created. - * This temporary axis is destroyed if another axis is explicitly set to same orientation. - */ - -/*! - * \qmlproperty Surface3D.LabelTransparency Surface3D::labelTransparency - * Label transparency. - */ - -/*! - * \qmlproperty Surface3D.ShadowQuality Surface3D::shadowQuality - * Shadow quality. - */ - -/*! - * \qmlproperty Surface3D.CameraPreset Surface3D::cameraPreset - * Camera preset. - */ - -/*! - * \qmlproperty Surface3D.ColorTheme Surface3D::theme - * Theme of the graph. Theme affects label colors, text color, background color, window - * color and grid color. Lighting is also adjusted by themes. - */ - -/*! - * \qmlproperty font Surface3D::font - * Font used for labels. - */ - -/*! - * \qmlproperty bool Surface3D::gridVisible - * Axis grid visibility. If false, grid lines are not drawn. - */ - -/*! - * \qmlproperty bool Surface3D::backgroundVisible - * Background visibility. If false, background is not drawn. - */ - -/*! - * \qmlproperty bool Surface3D::smoothSurfaceEnabled - * Smoothing of surface. If false, shading of the surface is flat. - */ - -/*! - * \qmlproperty bool Surface3D::surfaceGridEnabled - * Surface grid visibility. If false, no surface grid is drawn. - */ - -/*! - * \qmlproperty string Surface3D::itemLabelFormat - * Label format of single item labels, e.g. a selected bar. - */ - -/*! - * \qmlproperty var Surface3D::gradient - * The current surface gradient. Setting this property replaces the previous gradient. - */ - /*! * Constructs a new 3D surface window. */ diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp new file mode 100644 index 00000000..a2b39bf0 --- /dev/null +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "abstractdeclarative_p.h" +#include "q3dvalueaxis.h" +#include "theme_p.h" + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +AbstractDeclarative::AbstractDeclarative(QQuickItem *parent) : + QQuickItem(parent) +{ +} + +AbstractDeclarative::~AbstractDeclarative() +{ +} + +void AbstractDeclarative::setCameraPosition(qreal horizontal, qreal vertical, int distance) +{ + m_controller->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); +} + +void AbstractDeclarative::setCameraPreset(QDataVis::CameraPreset preset) +{ + m_controller->setCameraPreset(preset); +} + +QDataVis::CameraPreset AbstractDeclarative::cameraPreset() const +{ + return m_controller->cameraPreset(); +} + +void AbstractDeclarative::setTheme(QDataVis::ColorTheme theme) +{ + // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented + m_controller->setColorTheme(theme); +} + +QDataVis::ColorTheme AbstractDeclarative::theme() const +{ + return m_controller->theme().colorTheme(); +} + +void AbstractDeclarative::setSelectionMode(QDataVis::SelectionMode mode) +{ + m_controller->setSelectionMode(mode); +} + +QDataVis::SelectionMode AbstractDeclarative::selectionMode() const +{ + return m_controller->selectionMode(); +} + +void AbstractDeclarative::setFont(const QFont &font) +{ + m_controller->setFont(font); +} + +QFont AbstractDeclarative::font() const +{ + return m_controller->font(); +} + +void AbstractDeclarative::setLabelTransparency(QDataVis::LabelTransparency transparency) +{ + m_controller->setLabelTransparency(transparency); +} + +QDataVis::LabelTransparency AbstractDeclarative::labelTransparency() const +{ + return m_controller->labelTransparency(); +} + +void AbstractDeclarative::setGridVisible(bool visible) +{ + m_controller->setGridEnabled(visible); +} + +bool AbstractDeclarative::isGridVisible() const +{ + return m_controller->gridEnabled(); +} + +void AbstractDeclarative::setBackgroundVisible(bool visible) +{ + m_controller->setBackgroundEnabled(visible); +} + +bool AbstractDeclarative::isBackgroundVisible() const +{ + return m_controller->backgroundEnabled(); +} + +void AbstractDeclarative::setShadowQuality(QDataVis::ShadowQuality quality) +{ + m_controller->setShadowQuality(quality); +} + +QDataVis::ShadowQuality AbstractDeclarative::shadowQuality() const +{ + return m_controller->shadowQuality(); +} + +void AbstractDeclarative::setItemLabelFormat(const QString &format) +{ + m_controller->activeDataProxy()->setItemLabelFormat(format); +} + +QString AbstractDeclarative::itemLabelFormat() const +{ + return m_controller->activeDataProxy()->itemLabelFormat(); +} + +void AbstractDeclarative::setSharedController(Abstract3DController *controller) +{ + Q_ASSERT(controller); + m_controller = controller; + QObject::connect(m_controller, &Abstract3DController::shadowQualityChanged, this, + &AbstractDeclarative::handleShadowQualityUpdate); +} + + +void AbstractDeclarative::mouseDoubleClickEvent(QMouseEvent *event) +{ +#if defined(Q_OS_ANDROID) + m_controller->mouseDoubleClickEvent(event); +#else + Q_UNUSED(event) +#endif +} + +void AbstractDeclarative::touchEvent(QTouchEvent *event) +{ +#if defined(Q_OS_ANDROID) + m_controller->touchEvent(event); + update(); +#else + Q_UNUSED(event) +#endif +} + +void AbstractDeclarative::mousePressEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mousePressEvent(event, mousePos); +} + +void AbstractDeclarative::mouseReleaseEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mouseReleaseEvent(event, mousePos); +} + +void AbstractDeclarative::mouseMoveEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mouseMoveEvent(event, mousePos); +} + +void AbstractDeclarative::wheelEvent(QWheelEvent *event) +{ + m_controller->wheelEvent(event); +} + +void AbstractDeclarative::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) +{ + emit shadowQualityChanged(quality); +} + +QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h new file mode 100644 index 00000000..a7f03cc7 --- /dev/null +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the QtDataVisualization API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef ABSTRACTDECLARATIVE_P_H +#define ABSTRACTDECLARATIVE_P_H + +#include "datavisualizationglobal_p.h" +#include "abstract3dcontroller_p.h" + +#include +#include +#include + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +class AbstractDeclarative : public QQuickItem +{ + Q_OBJECT + Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) + Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) + Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) + Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) + Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) + Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) + Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) + Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) + Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) + Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) + Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) + Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) + +public: + explicit AbstractDeclarative(QQuickItem *parent = 0); + virtual ~AbstractDeclarative(); + + Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); + + virtual void setCameraPreset(QDataVis::CameraPreset preset); + virtual QDataVis::CameraPreset cameraPreset() const; + + virtual void setTheme(QDataVis::ColorTheme theme); + virtual QDataVis::ColorTheme theme() const; + + virtual void setSelectionMode(QDataVis::SelectionMode mode); + virtual QDataVis::SelectionMode selectionMode() const; + + virtual void setFont(const QFont &font); + virtual QFont font() const; + + virtual void setLabelTransparency(QDataVis::LabelTransparency transparency); + virtual QDataVis::LabelTransparency labelTransparency() const; + + virtual void setGridVisible(bool visible); + virtual bool isGridVisible() const; + + virtual void setBackgroundVisible(bool visible); + virtual bool isBackgroundVisible() const; + + virtual void setShadowQuality(QDataVis::ShadowQuality quality); + virtual QDataVis::ShadowQuality shadowQuality() const; + + virtual void setItemLabelFormat(const QString &format); + virtual QString itemLabelFormat() const; + + void setSharedController(Abstract3DController *controller); + +protected: + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void touchEvent(QTouchEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + // Used to detect when shadow quality changes autonomously due to e.g. resizing. + virtual void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); + +signals: + // Signals shadow quality changes. + void shadowQualityChanged(QDataVis::ShadowQuality quality); + +private: + Abstract3DController *m_controller; +}; + +QT_DATAVISUALIZATION_END_NAMESPACE + +#endif // ABSTRACTDECLARATIVE_P_H diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro index c5ee910b..68e267ed 100644 --- a/src/datavisualizationqml2/datavisualizationqml2.pro +++ b/src/datavisualizationqml2/datavisualizationqml2.pro @@ -23,7 +23,8 @@ SOURCES += \ declarativescatter.cpp \ declarativescatterrenderer.cpp \ declarativesurface.cpp \ - declarativesurfacerenderer.cpp + declarativesurfacerenderer.cpp \ + abstractdeclarative.cpp HEADERS += \ datavisualizationqml2_plugin.h \ @@ -32,7 +33,8 @@ HEADERS += \ declarativescatter_p.h \ declarativescatterrenderer_p.h \ declarativesurface_p.h \ - declarativesurfacerenderer_p.h + declarativesurfacerenderer_p.h \ + abstractdeclarative_p.h OTHER_FILES = qmldir diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp index db3cb6f5..5bb9ed3a 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp @@ -41,6 +41,8 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) QLatin1String("Trying to create uncreatable: ScatterDataProxy.")); qmlRegisterUncreatableType(uri, 1, 0, "SurfaceDataProxy", QLatin1String("Trying to create uncreatable: SurfaceDataProxy.")); + qmlRegisterUncreatableType(uri, 1, 0, "AbstractDeclarative", + QLatin1String("Trying to create uncreatable: AbstractDeclarative.")); qmlRegisterType(uri, 1, 0, "BarDataMapping"); qmlRegisterType(uri, 1, 0, "ScatterDataMapping"); diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h index 19106279..31066c47 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h @@ -37,6 +37,7 @@ QT_DATAVISUALIZATION_USE_NAMESPACE +Q_DECLARE_METATYPE(AbstractDeclarative *) Q_DECLARE_METATYPE(DeclarativeBars *) Q_DECLARE_METATYPE(DeclarativeScatter *) Q_DECLARE_METATYPE(DeclarativeSurface *) diff --git a/src/datavisualizationqml2/declarativebars.cpp b/src/datavisualizationqml2/declarativebars.cpp index c757c804..c15ca495 100644 --- a/src/datavisualizationqml2/declarativebars.cpp +++ b/src/datavisualizationqml2/declarativebars.cpp @@ -27,7 +27,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE const QString smoothString(QStringLiteral("Smooth")); DeclarativeBars::DeclarativeBars(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -40,8 +40,7 @@ DeclarativeBars::DeclarativeBars(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Bars3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeBars::handleShadowQualityUpdate); + AbstractDeclarative::setSharedController(m_shared); QObject::connect(m_shared, &Bars3DController::selectedBarPosChanged, this, &DeclarativeBars::selectedBarPosChanged); @@ -54,10 +53,6 @@ DeclarativeBars::~DeclarativeBars() delete m_shared; } -void DeclarativeBars::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} QSGNode *DeclarativeBars::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { @@ -87,11 +82,6 @@ void DeclarativeBars::setBarColor(const QColor &baseColor, bool uniform) m_shared->setObjectColor(baseColor, uniform); } -void DeclarativeBars::setCameraPosition(qreal horizontal, qreal vertical, int distance) -{ - m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); -} - void DeclarativeBars::setDataProxy(QBarDataProxy *dataProxy) { m_shared->setActiveDataProxy(dataProxy); @@ -137,7 +127,7 @@ void DeclarativeBars::setBarThickness(qreal thicknessRatio) m_shared->setBarSpecs(GLfloat(thicknessRatio), barSpacing(), isBarSpacingRelative()); } -qreal DeclarativeBars::barThickness() +qreal DeclarativeBars::barThickness() const { return m_shared->barThickness(); } @@ -147,7 +137,7 @@ void DeclarativeBars::setBarSpacing(QSizeF spacing) m_shared->setBarSpecs(GLfloat(barThickness()), spacing, isBarSpacingRelative()); } -QSizeF DeclarativeBars::barSpacing() +QSizeF DeclarativeBars::barSpacing() const { return m_shared->barSpacing(); } @@ -157,7 +147,7 @@ void DeclarativeBars::setBarSpacingRelative(bool relative) m_shared->setBarSpecs(GLfloat(barThickness()), barSpacing(), relative); } -bool DeclarativeBars::isBarSpacingRelative() +bool DeclarativeBars::isBarSpacingRelative() const { return m_shared->isBarSpecRelative(); } @@ -169,7 +159,7 @@ void DeclarativeBars::setBarType(QDataVis::MeshStyle style) m_shared->setBarType(style, smooth); } -QDataVis::MeshStyle DeclarativeBars::barType() +QDataVis::MeshStyle DeclarativeBars::barType() const { QString objFile = m_shared->meshFileName(); if (objFile.contains("/sphere")) @@ -195,7 +185,7 @@ void DeclarativeBars::setBarSmoothingEnabled(bool enabled) m_shared->setMeshFileName(objFile); } -bool DeclarativeBars::isBarSmoothingEnabled() +bool DeclarativeBars::isBarSmoothingEnabled() const { QString objFile = m_shared->meshFileName(); return objFile.endsWith(smoothString); @@ -206,102 +196,11 @@ void DeclarativeBars::setMeshFileName(const QString &objFileName) m_shared->setMeshFileName(objFileName); } -QString DeclarativeBars::meshFileName() +QString DeclarativeBars::meshFileName() const { return m_shared->meshFileName(); } -void DeclarativeBars::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeBars::cameraPreset() -{ - return m_shared->cameraPreset(); -} - -void DeclarativeBars::setTheme(QDataVis::ColorTheme theme) -{ - // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeBars::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeBars::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeBars::font() -{ - return m_shared->font(); -} - -void DeclarativeBars::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeBars::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeBars::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeBars::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeBars::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeBars::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - -void DeclarativeBars::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeBars::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeBars::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeBars::shadowQuality() -{ - return m_shared->shadowQuality(); -} - -void DeclarativeBars::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeBars::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - void DeclarativeBars::setSelectedBarPos(const QPointF &position) { m_shared->setSelectedBarPos(position.toPoint()); @@ -312,49 +211,4 @@ QPointF DeclarativeBars::selectedBarPos() const return QPointF(m_shared->selectedBarPos()); } -void DeclarativeBars::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeBars::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeBars::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeBars::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeBars::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeBars::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index 78223773..dfbf9934 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -30,6 +30,7 @@ #define DECLARATIVEBARS_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "bars3dcontroller_p.h" #include "declarativebars_p.h" #include "q3dvalueaxis.h" @@ -43,49 +44,28 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeBars : public QQuickItem +class DeclarativeBars : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QBarDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DCategoryAxis *rowAxis READ rowAxis WRITE setRowAxis) Q_PROPERTY(Q3DValueAxis *valueAxis READ valueAxis WRITE setValueAxis) Q_PROPERTY(Q3DCategoryAxis *columnAxis READ columnAxis WRITE setColumnAxis) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(QtDataVisualization::QDataVis::MeshStyle barType READ barType WRITE setBarType) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) Q_PROPERTY(qreal barThickness READ barThickness WRITE setBarThickness) Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing) Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative) Q_PROPERTY(bool barSmoothingEnabled READ isBarSmoothingEnabled WRITE setBarSmoothingEnabled) Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) - Q_PROPERTY(QFont font READ font WRITE setFont) - Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) - Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) - Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) Q_PROPERTY(QPointF selectedBarPos READ selectedBarPos WRITE setSelectedBarPos NOTIFY selectedBarPosChanged) - Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeBars(QQuickItem *parent = 0); ~DeclarativeBars(); - // Set color if you don't want to use themes. Set uniform to false if you want the (height) - // color to change from bottom to top Q_INVOKABLE void setBarColor(const QColor &baseColor, bool uniform = true); - // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and - // vertical (0...90) (or (-90...90) if there are negative values) angles and distance in - // percentage (10...500)) - Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); - QBarDataProxy *dataProxy() const; void setDataProxy(QBarDataProxy *dataProxy); @@ -96,91 +76,35 @@ public: Q3DCategoryAxis *columnAxis() const; void setColumnAxis(Q3DCategoryAxis *axis); - // Set bar thickness. void setBarThickness(qreal thicknessRatio); - qreal barThickness(); + qreal barThickness() const; - // Set spacing between bars. Y-component sets the spacing of Z-direction. - // If spacing is relative, 0.0f means side-to-side and 1.0f = one thickness in between. void setBarSpacing(QSizeF spacing); - QSizeF barSpacing(); + QSizeF barSpacing() const; - // Set bar spacing relative to thickness or absolute void setBarSpacingRelative(bool relative); - bool isBarSpacingRelative(); + bool isBarSpacingRelative() const; - // Bar type void setBarType(QDataVis::MeshStyle style); - QDataVis::MeshStyle barType(); + QDataVis::MeshStyle barType() const; - // Bar smoothing void setBarSmoothingEnabled(bool enabled); - bool isBarSmoothingEnabled(); + bool isBarSmoothingEnabled() const; - // override object type with own mesh void setMeshFileName(const QString &objFileName); - QString meshFileName(); - - // Select preset camera placement - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - // Set theme (object colors, shaders, window color, background colors, light intensity and text - // colors are affected) - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - // Change selection mode; single bar, bar and row, bar and column, or all - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - // Set font - void setFont(const QFont &font); - QFont font(); - - // Label transparency adjustment - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - // Enable or disable background grid - void setGridVisible(bool visible); - bool isGridVisible(); - - // Enable or disable background mesh - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - - // Adjust shadow quality - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); + QString meshFileName() const; void setSelectedBarPos(const QPointF &position); QPointF selectedBarPos() const; signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); void selectedBarPosChanged(const QPointF &position); protected: - Bars3DController *m_shared; - - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: + Bars3DController *m_shared; QSize m_initialisedSize; }; diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp index 34a11024..6447c781 100644 --- a/src/datavisualizationqml2/declarativescatter.cpp +++ b/src/datavisualizationqml2/declarativescatter.cpp @@ -26,7 +26,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE const QString smoothString(QStringLiteral("Smooth")); DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -39,9 +39,7 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Scatter3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeScatter::handleShadowQualityUpdate); - + setSharedController(m_shared); m_shared->setActiveDataProxy(new QItemModelScatterDataProxy); } @@ -50,11 +48,6 @@ DeclarativeScatter::~DeclarativeScatter() delete m_shared; } -void DeclarativeScatter::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} - QSGNode *DeclarativeScatter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { // If old node exists and has right size, reuse it. @@ -78,11 +71,6 @@ QSGNode *DeclarativeScatter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa return node; } -void DeclarativeScatter::setCameraPosition(qreal horizontal, qreal vertical, int distance) -{ - m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); -} - void DeclarativeScatter::setObjectColor(const QColor &baseColor, bool uniform) { m_shared->setObjectColor(baseColor, uniform); @@ -135,7 +123,7 @@ void DeclarativeScatter::setObjectType(QDataVis::MeshStyle style) m_shared->setObjectType(style, smooth); } -QDataVis::MeshStyle DeclarativeScatter::objectType() +QDataVis::MeshStyle DeclarativeScatter::objectType() const { QString objFile = m_shared->meshFileName(); if (objFile.contains("/sphere")) @@ -161,7 +149,7 @@ void DeclarativeScatter::setObjectSmoothingEnabled(bool enabled) m_shared->setMeshFileName(objFile); } -bool DeclarativeScatter::isObjectSmoothingEnabled() +bool DeclarativeScatter::isObjectSmoothingEnabled() const { QString objFile = m_shared->meshFileName(); return objFile.endsWith(smoothString); @@ -172,144 +160,9 @@ void DeclarativeScatter::setMeshFileName(const QString &objFileName) m_shared->setMeshFileName(objFileName); } -QString DeclarativeScatter::meshFileName() +QString DeclarativeScatter::meshFileName() const { return m_shared->meshFileName(); } -void DeclarativeScatter::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeScatter::cameraPreset() -{ - return m_shared->cameraPreset(); -} - -void DeclarativeScatter::setTheme(QDataVis::ColorTheme theme) -{ - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeScatter::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeScatter::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeScatter::font() -{ - return m_shared->font(); -} - -void DeclarativeScatter::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeScatter::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeScatter::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeScatter::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeScatter::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeScatter::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - -void DeclarativeScatter::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeScatter::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeScatter::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeScatter::shadowQuality() -{ - return m_shared->shadowQuality(); -} - -void DeclarativeScatter::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeScatter::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - -void DeclarativeScatter::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeScatter::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeScatter::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeScatter::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeScatter::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeScatter::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index 4541df8e..cc16e770 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -30,6 +30,7 @@ #define DECLARATIVESCATTER_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "scatter3dcontroller_p.h" #include "declarativescatter_p.h" #include "q3dvalueaxis.h" @@ -41,42 +42,23 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeScatter : public QQuickItem +class DeclarativeScatter : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QScatterDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DValueAxis *axisX READ axisX WRITE setAxisX) Q_PROPERTY(Q3DValueAxis *axisY READ axisY WRITE setAxisY) Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(QtDataVisualization::QDataVis::MeshStyle objectType READ objectType WRITE setObjectType) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) Q_PROPERTY(bool objectSmoothingEnabled READ isObjectSmoothingEnabled WRITE setObjectSmoothingEnabled) Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) - Q_PROPERTY(QFont font READ font WRITE setFont) - Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) - Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) - Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeScatter(QQuickItem *parent = 0); ~DeclarativeScatter(); - // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and - // vertical (-90...90) angles and distance in percentage (10...500)) - Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); - - // Set color if you don't want to use themes. Set uniform to false if you want the (height) - // color to change from bottom to top Q_INVOKABLE void setObjectColor(const QColor &baseColor, bool uniform = true); QScatterDataProxy *dataProxy() const; @@ -89,72 +71,19 @@ public: Q3DValueAxis *axisZ() const; void setAxisZ(Q3DValueAxis *axis); - // Object type void setObjectType(QDataVis::MeshStyle style); - QDataVis::MeshStyle objectType(); + QDataVis::MeshStyle objectType() const; - // Object smoothing void setObjectSmoothingEnabled(bool enabled); - bool isObjectSmoothingEnabled(); + bool isObjectSmoothingEnabled() const; - // override object type with own mesh void setMeshFileName(const QString &objFileName); - QString meshFileName(); - - // Select preset camera placement - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - // Set theme (object colors, shaders, window color, background colors, light intensity and text - // colors are affected) - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - // Change selection mode - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - // Set font - void setFont(const QFont &font); - QFont font(); - - // Label transparency adjustment - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - // Enable or disable background grid - void setGridVisible(bool visible); - bool isGridVisible(); - - // Enable or disable background mesh - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); - - // Adjust shadow quality - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - -signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); + QString meshFileName() const; protected: Scatter3DController *m_shared; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: QSize m_initialisedSize; }; diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp index 48eec8ce..f74472f5 100644 --- a/src/datavisualizationqml2/declarativesurface.cpp +++ b/src/datavisualizationqml2/declarativesurface.cpp @@ -25,7 +25,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE DeclarativeSurface::DeclarativeSurface(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -38,8 +38,7 @@ DeclarativeSurface::DeclarativeSurface(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Surface3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeSurface::handleShadowQualityUpdate); + setSharedController(m_shared); QItemModelSurfaceDataProxy *proxy = new QItemModelSurfaceDataProxy; m_shared->setActiveDataProxy(proxy); @@ -50,11 +49,6 @@ DeclarativeSurface::~DeclarativeSurface() delete m_shared; } -void DeclarativeSurface::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} - QSGNode *DeclarativeSurface::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { // If old node exists and has right size, reuse it. @@ -93,17 +87,6 @@ QSurfaceDataProxy *DeclarativeSurface::dataProxy() const return static_cast(m_shared->activeDataProxy()); } -void DeclarativeSurface::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeSurface::cameraPreset() -{ - return m_shared->cameraPreset(); - -} - Q3DValueAxis *DeclarativeSurface::axisX() const { return static_cast(m_shared->axisX()); @@ -134,57 +117,6 @@ void DeclarativeSurface::setAxisZ(Q3DValueAxis *axis) m_shared->setAxisZ(axis); } -void DeclarativeSurface::setTheme(QDataVis::ColorTheme theme) -{ - // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeSurface::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeSurface::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeSurface::font() -{ - return m_shared->font(); -} - -void DeclarativeSurface::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeSurface::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeSurface::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeSurface::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeSurface::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeSurface::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - void DeclarativeSurface::setSmoothSurfaceEnabled(bool enabled) { m_shared->setSmoothSurface(enabled); @@ -205,26 +137,6 @@ bool DeclarativeSurface::isSurfaceGridEnabled() const return m_shared->surfaceGrid(); } -void DeclarativeSurface::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeSurface::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeSurface::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeSurface::shadowQuality() -{ - return m_shared->shadowQuality(); -} - void DeclarativeSurface::setGradient(const QLinearGradient &gradient) { m_shared->setGradient(gradient); @@ -235,59 +147,4 @@ QLinearGradient DeclarativeSurface::gradient() const return m_shared->gradient(); } -void DeclarativeSurface::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeSurface::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - -void DeclarativeSurface::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeSurface::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeSurface::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeSurface::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeSurface::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeSurface::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index 21555fcc..29db1a44 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -30,6 +30,7 @@ #define DECLARATIVESURFACE_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "surface3dcontroller_p.h" #include "declarativesurface_p.h" #include "q3dvalueaxis.h" @@ -42,30 +43,16 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeSurface : public QQuickItem +class DeclarativeSurface : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QSurfaceDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DValueAxis *axisX READ axisX WRITE setAxisX) Q_PROPERTY(Q3DValueAxis *axisY READ axisY WRITE setAxisY) Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) - Q_PROPERTY(QFont font READ font WRITE setFont) - Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) - Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled) Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled) Q_PROPERTY(QLinearGradient gradient READ gradient WRITE setGradient) - Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) - Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeSurface(QQuickItem *parent = 0); @@ -83,62 +70,19 @@ public: Q3DValueAxis *axisZ() const; void setAxisZ(Q3DValueAxis *axis); - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - void setFont(const QFont &font); - QFont font(); - - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - void setGridVisible(bool visible); - bool isGridVisible(); - - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - void setSmoothSurfaceEnabled(bool enabled); bool isSmoothSurfaceEnabled() const; void setSurfaceGridEnabled(bool enabled); bool isSurfaceGridEnabled() const; - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - void setGradient(const QLinearGradient &gradient); QLinearGradient gradient() const; - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); - -signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); - protected: - Surface3DController *m_shared; - - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: + Surface3DController *m_shared; QSize m_initialisedSize; }; -- cgit v1.2.3