summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qmlbars/qml/qmlbars/main.qml2
-rw-r--r--src/datavisualization/data/qbar3dseries.cpp10
-rw-r--r--src/datavisualization/data/qbar3dseries.h2
-rw-r--r--src/datavisualization/data/qscatter3dseries.cpp10
-rw-r--r--src/datavisualization/data/qscatter3dseries.h3
-rw-r--r--src/datavisualization/data/qsurface3dseries.cpp10
-rw-r--r--src/datavisualization/data/qsurface3dseries.h2
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp7
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h2
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/bars3dcontroller_p.h2
-rw-r--r--src/datavisualization/engine/q3dscene.cpp12
-rw-r--r--src/datavisualization/engine/q3dscene.h2
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/scatter3dcontroller_p.h2
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h2
-rw-r--r--src/datavisualizationqml2/abstractdeclarative.cpp5
-rw-r--r--src/datavisualizationqml2/abstractdeclarative_p.h5
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2.pro6
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.cpp4
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.h2
-rw-r--r--src/datavisualizationqml2/declarativebars.cpp3
-rw-r--r--src/datavisualizationqml2/declarativescatter.cpp3
-rw-r--r--src/datavisualizationqml2/declarativescene.cpp49
-rw-r--r--src/datavisualizationqml2/declarativescene_p.h60
-rw-r--r--src/datavisualizationqml2/declarativeseries.cpp5
-rw-r--r--src/datavisualizationqml2/declarativeseries_p.h19
-rw-r--r--src/datavisualizationqml2/declarativesurface.cpp3
29 files changed, 194 insertions, 50 deletions
diff --git a/examples/qmlbars/qml/qmlbars/main.qml b/examples/qmlbars/qml/qmlbars/main.qml
index 0581f834..d5f7fd34 100644
--- a/examples/qmlbars/qml/qmlbars/main.qml
+++ b/examples/qmlbars/qml/qmlbars/main.qml
@@ -43,7 +43,7 @@ Item {
selectedSeries: barSeries
function handleSelectionChange(series, position) {
- if (position != series.invalidSelectionPosition()) {
+ if (position != series.invalidSelectionPosition) {
selectedSeries = series
}
diff --git a/src/datavisualization/data/qbar3dseries.cpp b/src/datavisualization/data/qbar3dseries.cpp
index 6f0973cc..fea0b359 100644
--- a/src/datavisualization/data/qbar3dseries.cpp
+++ b/src/datavisualization/data/qbar3dseries.cpp
@@ -93,16 +93,16 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
* Selects a bar at the \a position. The \a position is the (row, column) position in
* the data array of the series.
* Only one bar can be selected at a time.
- * To clear selection, set invalidSelectionPosition() as the \a position.
+ * To clear selection, set invalidSelectionPosition as the \a position.
* If this series is added to a graph, the graph can adjust the selection according to user
* interaction or if it becomes invalid. Selecting a bar on another added series will also
* clear the selection.
*/
/*!
- * \qmlmethod point Bar3DSeries::invalidSelectionPosition()
- * \return an invalid position for selection. Set this position to selectedBar property if you
- * want to clear the selection.
+ * \qmlproperty point Bar3DSeries::invalidSelectionPosition
+ * A constant property providing an invalid position for selection. Set this position to
+ * selectedBar property if you want to clear the selection.
*/
/*!
@@ -185,7 +185,7 @@ QPoint QBar3DSeries::selectedBar() const
* \return an invalid position for selection. Set this position to selectedBar property if you
* want to clear the selection.
*/
-QPoint QBar3DSeries::invalidSelectionPosition() const
+QPoint QBar3DSeries::invalidSelectionPosition()
{
return Bars3DController::invalidSelectionPosition();
}
diff --git a/src/datavisualization/data/qbar3dseries.h b/src/datavisualization/data/qbar3dseries.h
index 5883cbfb..d4e948ad 100644
--- a/src/datavisualization/data/qbar3dseries.h
+++ b/src/datavisualization/data/qbar3dseries.h
@@ -43,7 +43,7 @@ public:
void setSelectedBar(const QPoint &position);
QPoint selectedBar() const;
- QPoint invalidSelectionPosition() const;
+ static QPoint invalidSelectionPosition();
signals:
void dataProxyChanged(QBarDataProxy *proxy);
diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp
index 0e7ce921..5aa17ed3 100644
--- a/src/datavisualization/data/qscatter3dseries.cpp
+++ b/src/datavisualization/data/qscatter3dseries.cpp
@@ -88,7 +88,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*
* Selects an item at the \a index. The \a index is the index in the data array of the series.
* Only one item can be selected at a time.
- * To clear selection, set invalidSelectionIndex() as the \a index.
+ * To clear selection, set invalidSelectionIndex as the \a index.
* If this series is added to a graph, the graph can adjust the selection according to user
* interaction or if it becomes invalid. Selecting an item on another added series will also
* clear the selection.
@@ -103,9 +103,9 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * \qmlmethod int Scatter3DSeries::invalidSelectionIndex()
- * \return an invalid index for selection. Set this index to selectedItem property if you
- * want to clear the selection.
+ * \qmlproperty int Scatter3DSeries::invalidSelectionIndex
+ * A constant property providing an invalid index for selection. Set this index to
+ * selectedItem property if you want to clear the selection.
*/
/*!
@@ -209,7 +209,7 @@ float QScatter3DSeries::itemSize() const
* \return an invalid index for selection. Set this index to selectedItem property if you
* want to clear the selection.
*/
-int QScatter3DSeries::invalidSelectionIndex() const
+int QScatter3DSeries::invalidSelectionIndex()
{
return Scatter3DController::invalidSelectionIndex();
}
diff --git a/src/datavisualization/data/qscatter3dseries.h b/src/datavisualization/data/qscatter3dseries.h
index 1d9abc11..758277c0 100644
--- a/src/datavisualization/data/qscatter3dseries.h
+++ b/src/datavisualization/data/qscatter3dseries.h
@@ -43,12 +43,11 @@ public:
void setSelectedItem(int index);
int selectedItem() const;
+ static int invalidSelectionIndex();
void setItemSize(float size);
float itemSize() const;
- Q_INVOKABLE int invalidSelectionIndex() const;
-
signals:
void dataProxyChanged(QScatterDataProxy *proxy);
void selectedItemChanged(int index);
diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp
index da285b2d..25405959 100644
--- a/src/datavisualization/data/qsurface3dseries.cpp
+++ b/src/datavisualization/data/qsurface3dseries.cpp
@@ -92,15 +92,15 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
* Selects a surface grid point in a \a position. The position is the (row, column) position in
* the data array of the series.
* Only one point can be selected at a time.
- * To clear selection, set invalidSelectionPosition() as the \a position.
+ * To clear selection, set invalidSelectionPosition as the \a position.
* If this series is added to a graph, the graph can adjust the selection according to user
* interaction or if it becomes invalid.
*/
/*!
- * \qmlmethod point Surface3DSeries::invalidSelectionPosition()
- * \return a point signifying an invalid selection position. Set this to selectedPoint property
- * to clear the selection.
+ * \qmlproperty point Surface3DSeries::invalidSelectionPosition
+ * A constant property providing an invalid selection position.
+ * Set this to selectedPoint property to clear the selection.
*/
/*!
@@ -221,7 +221,7 @@ QPoint QSurface3DSeries::selectedPoint() const
* \return a QPoint signifying an invalid selection position. Set this to selectedPoint property
* to clear the selection.
*/
-QPoint QSurface3DSeries::invalidSelectionPosition() const
+QPoint QSurface3DSeries::invalidSelectionPosition()
{
return Surface3DController::invalidSelectionPosition();
}
diff --git a/src/datavisualization/data/qsurface3dseries.h b/src/datavisualization/data/qsurface3dseries.h
index 6681495b..0ddd53da 100644
--- a/src/datavisualization/data/qsurface3dseries.h
+++ b/src/datavisualization/data/qsurface3dseries.h
@@ -53,7 +53,7 @@ public:
void setSelectedPoint(const QPoint &position);
QPoint selectedPoint() const;
- QPoint invalidSelectionPosition() const;
+ static QPoint invalidSelectionPosition();
void setFlatShadingEnabled(bool enabled);
bool isFlatShadingEnabled() const;
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index 09c75ceb..da2e2a14 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -35,12 +35,12 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-Abstract3DController::Abstract3DController(QRect initialViewport, QObject *parent) :
+Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scene, QObject *parent) :
QObject(parent),
m_themeManager(new ThemeManager(this)),
m_selectionMode(QDataVis::SelectionItem),
m_shadowQuality(QDataVis::ShadowQualityMedium),
- m_scene(new Q3DScene()),
+ m_scene(scene),
m_activeInputHandler(0),
m_axisX(0),
m_axisY(0),
@@ -51,6 +51,9 @@ Abstract3DController::Abstract3DController(QRect initialViewport, QObject *paren
m_isSeriesVisualsDirty(true),
m_renderPending(false)
{
+ if (!m_scene)
+ m_scene = new Q3DScene;
+
// Set initial theme
setActiveTheme(new Q3DTheme(Q3DTheme::ThemeQt));
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h
index 91083eb9..9c24844f 100644
--- a/src/datavisualization/engine/abstract3dcontroller_p.h
+++ b/src/datavisualization/engine/abstract3dcontroller_p.h
@@ -158,7 +158,7 @@ protected:
QList<QAbstract3DSeries *> m_seriesList;
- explicit Abstract3DController(QRect initialViewport, QObject *parent = 0);
+ explicit Abstract3DController(QRect initialViewport, Q3DScene *scene, QObject *parent = 0);
public:
virtual ~Abstract3DController();
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index 3efd890b..c765a37a 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -32,8 +32,8 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-Bars3DController::Bars3DController(QRect boundRect)
- : Abstract3DController(boundRect),
+Bars3DController::Bars3DController(QRect boundRect, Q3DScene *scene)
+ : Abstract3DController(boundRect, scene),
m_selectedBar(invalidSelectionPosition()),
m_selectedBarSeries(0),
m_isBarSpecRelative(true),
diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h
index 46fc991d..3fcae959 100644
--- a/src/datavisualization/engine/bars3dcontroller_p.h
+++ b/src/datavisualization/engine/bars3dcontroller_p.h
@@ -73,7 +73,7 @@ private:
Bars3DRenderer *m_renderer;
public:
- explicit Bars3DController(QRect rect);
+ explicit Bars3DController(QRect rect, Q3DScene *scene = 0);
~Bars3DController();
virtual void initializeOpenGL();
diff --git a/src/datavisualization/engine/q3dscene.cpp b/src/datavisualization/engine/q3dscene.cpp
index d8104b3a..ce037b55 100644
--- a/src/datavisualization/engine/q3dscene.cpp
+++ b/src/datavisualization/engine/q3dscene.cpp
@@ -90,9 +90,9 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
* \qmlproperty point Scene3D::selectionQueryPosition
*
* This property contains the coordinates for the user input that should be processed
- * by the scene as selection. If this is set to value other than \c{(-1, -1)} the
+ * by the scene as selection. If this is set to value other than invalidSelectionPoint the
* graph tries to select a data item at the given point within the primary viewport.
- * After the rendering pass the property is returned to its default state of \c{(-1, -1)}.
+ * After the rendering pass the property is returned to its default state of invalidSelectionPoint.
*/
/*!
@@ -131,6 +131,12 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
+ * \qmlproperty point Scene3D::invalidSelectionPoint
+ * A constant property providing an invalid point for selection.
+ */
+
+
+/*!
* Constructs a basic scene with one light and one camera in it. An
* optional \a parent parameter can be given and is then passed to QObject constructor.
*/
@@ -272,7 +278,7 @@ QPoint Q3DScene::selectionQueryPosition() const
/*!
* \return a QPoint signifying an invalid selection position.
*/
-const QPoint Q3DScene::invalidSelectionPoint()
+QPoint Q3DScene::invalidSelectionPoint()
{
static const QPoint invalidSelectionPos(-1, -1);
return invalidSelectionPos;
diff --git a/src/datavisualization/engine/q3dscene.h b/src/datavisualization/engine/q3dscene.h
index 27e09ab0..f57d3351 100644
--- a/src/datavisualization/engine/q3dscene.h
+++ b/src/datavisualization/engine/q3dscene.h
@@ -59,7 +59,7 @@ public:
void setSelectionQueryPosition(const QPoint &point);
QPoint selectionQueryPosition() const;
- static const QPoint invalidSelectionPoint();
+ static QPoint invalidSelectionPoint();
void setSlicingActive(bool isSlicing);
bool isSlicingActive() const;
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index 61a95e88..58706705 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -29,8 +29,8 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-Scatter3DController::Scatter3DController(QRect boundRect)
- : Abstract3DController(boundRect),
+Scatter3DController::Scatter3DController(QRect boundRect, Q3DScene *scene)
+ : Abstract3DController(boundRect, scene),
m_renderer(0),
m_selectedItem(invalidSelectionIndex()),
m_selectedItemSeries(0)
diff --git a/src/datavisualization/engine/scatter3dcontroller_p.h b/src/datavisualization/engine/scatter3dcontroller_p.h
index 397d47a4..d484454d 100644
--- a/src/datavisualization/engine/scatter3dcontroller_p.h
+++ b/src/datavisualization/engine/scatter3dcontroller_p.h
@@ -63,7 +63,7 @@ private:
// in single series selection cases.
public:
- explicit Scatter3DController(QRect rect);
+ explicit Scatter3DController(QRect rect, Q3DScene *scene = 0);
~Scatter3DController();
virtual void initializeOpenGL();
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index 6082e105..7c7b7a90 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -32,8 +32,8 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-Surface3DController::Surface3DController(QRect rect)
- : Abstract3DController(rect),
+Surface3DController::Surface3DController(QRect rect, Q3DScene *scene)
+ : Abstract3DController(rect, scene),
m_renderer(0),
m_selectedPoint(invalidSelectionPosition()),
m_selectedSeries(0),
diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h
index 54d709b4..915a3122 100644
--- a/src/datavisualization/engine/surface3dcontroller_p.h
+++ b/src/datavisualization/engine/surface3dcontroller_p.h
@@ -70,7 +70,7 @@ private:
QVector<int> m_changedRows;
public:
- explicit Surface3DController(QRect rect);
+ explicit Surface3DController(QRect rect, Q3DScene *scene = 0);
~Surface3DController();
virtual void initializeOpenGL();
diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp
index 65f27da0..cb5b1e6a 100644
--- a/src/datavisualizationqml2/abstractdeclarative.cpp
+++ b/src/datavisualizationqml2/abstractdeclarative.cpp
@@ -18,6 +18,7 @@
#include "abstractdeclarative_p.h"
#include "qvalue3daxis.h"
+
#include <QThread>
#include <QGuiApplication>
#include <QSGSimpleRectNode>
@@ -39,9 +40,9 @@ AbstractDeclarative::~AbstractDeclarative()
{
}
-Q3DScene* AbstractDeclarative::scene() const
+Declarative3DScene* AbstractDeclarative::scene() const
{
- return m_controller->scene();
+ return static_cast<Declarative3DScene *>(m_controller->scene());
}
void AbstractDeclarative::setTheme(Q3DTheme *theme)
diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h
index 5da22df3..b62090c1 100644
--- a/src/datavisualizationqml2/abstractdeclarative_p.h
+++ b/src/datavisualizationqml2/abstractdeclarative_p.h
@@ -32,6 +32,7 @@
#include "datavisualizationglobal_p.h"
#include "abstract3dcontroller_p.h"
#include "qabstract3dinputhandler.h"
+#include "declarativescene_p.h"
#include <QAbstractItemModel>
#include <QQuickItem>
@@ -45,7 +46,7 @@ class AbstractDeclarative : public QQuickItem
Q_OBJECT
Q_PROPERTY(QtDataVisualization::QDataVis::SelectionFlags selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged)
Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality NOTIFY shadowQualityChanged)
- Q_PROPERTY(Q3DScene* scene READ scene NOTIFY sceneChanged)
+ Q_PROPERTY(Declarative3DScene* scene READ scene NOTIFY sceneChanged)
Q_PROPERTY(QAbstract3DInputHandler* inputHandler READ inputHandler WRITE setInputHandler NOTIFY inputHandlerChanged)
Q_PROPERTY(Q3DTheme* theme READ theme WRITE setTheme NOTIFY themeChanged)
Q_PROPERTY(bool clearWindowBeforeRendering READ clearWindowBeforeRendering WRITE setClearWindowBeforeRendering NOTIFY clearWindowBeforeRenderingChanged)
@@ -60,7 +61,7 @@ public:
virtual void setShadowQuality(QDataVis::ShadowQuality quality);
virtual QDataVis::ShadowQuality shadowQuality() const;
- virtual Q3DScene *scene() const;
+ virtual Declarative3DScene *scene() const;
virtual QAbstract3DInputHandler *inputHandler() const;
virtual void setInputHandler(QAbstract3DInputHandler *inputHandler);
diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro
index 989b52b9..7c456586 100644
--- a/src/datavisualizationqml2/datavisualizationqml2.pro
+++ b/src/datavisualizationqml2/datavisualizationqml2.pro
@@ -27,7 +27,8 @@ SOURCES += \
colorgradient.cpp \
declarativeseries.cpp \
declarativetheme.cpp \
- declarativecolor.cpp
+ declarativecolor.cpp \
+ declarativescene.cpp
HEADERS += \
datavisualizationqml2_plugin.h \
@@ -38,7 +39,8 @@ HEADERS += \
colorgradient_p.h \
declarativeseries_p.h \
declarativetheme_p.h \
- declarativecolor_p.h
+ declarativecolor_p.h \
+ declarativescene_p.h
OTHER_FILES = qmldir
diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
index c49f4894..93aa2eea 100644
--- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
+++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp
@@ -41,8 +41,8 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri)
QLatin1String("Trying to create uncreatable: SurfaceDataProxy."));
qmlRegisterUncreatableType<AbstractDeclarative>(uri, 1, 0, "AbstractGraph3D",
QLatin1String("Trying to create uncreatable: AbstractGraph3D."));
- qmlRegisterUncreatableType<Q3DScene>(uri, 1, 0, "Scene3D",
- QLatin1String("Trying to create uncreatable: Scene3D."));
+ qmlRegisterUncreatableType<Declarative3DScene>(uri, 1, 0, "Scene3D",
+ QLatin1String("Trying to create uncreatable: Scene3D."));
qmlRegisterUncreatableType<QAbstract3DSeries>(uri, 1, 0, "Abstract3DSeries",
QLatin1String("Trying to create uncreatable: Abstract3DSeries."));
qmlRegisterUncreatableType<QBar3DSeries>(uri, 1, 0, "QBar3DSeries",
diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h
index 3e689aec..e01a39f4 100644
--- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h
+++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h
@@ -42,6 +42,7 @@
#include "declarativetheme_p.h"
#include "qabstract3dinputhandler.h"
#include "declarativecolor_p.h"
+#include "declarativescene_p.h"
#include <QQmlExtensionPlugin>
@@ -60,6 +61,7 @@ QML_DECLARE_TYPE(QCategory3DAxis)
QML_DECLARE_TYPE(QValue3DAxis)
QML_DECLARE_TYPE(Q3DScene)
+QML_DECLARE_TYPE(Declarative3DScene)
QML_DECLARE_TYPE(Q3DObject)
QML_DECLARE_TYPE(Q3DCamera)
QML_DECLARE_TYPE(Q3DLight)
diff --git a/src/datavisualizationqml2/declarativebars.cpp b/src/datavisualizationqml2/declarativebars.cpp
index a9e4503c..b1bd806d 100644
--- a/src/datavisualizationqml2/declarativebars.cpp
+++ b/src/datavisualizationqml2/declarativebars.cpp
@@ -19,6 +19,7 @@
#include "declarativebars_p.h"
#include "qvalue3daxis.h"
#include "qitemmodelbardataproxy.h"
+#include "declarativescene_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -33,7 +34,7 @@ DeclarativeBars::DeclarativeBars(QQuickItem *parent)
setSmooth(true);
// Create the shared component on the main GUI thread.
- m_barsController = new Bars3DController(boundingRect().toRect());
+ m_barsController = new Bars3DController(boundingRect().toRect(), new Declarative3DScene);
AbstractDeclarative::setSharedController(m_barsController);
// TODO: Uncomment when doing QTRD-2669
diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp
index 3f7979b6..f7cbeaae 100644
--- a/src/datavisualizationqml2/declarativescatter.cpp
+++ b/src/datavisualizationqml2/declarativescatter.cpp
@@ -18,6 +18,7 @@
#include "declarativescatter_p.h"
#include "qitemmodelscatterdataproxy.h"
+#include "declarativescene_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -32,7 +33,7 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent)
setSmooth(true);
// Create the shared component on the main GUI thread.
- m_scatterController = new Scatter3DController(boundingRect().toRect());
+ m_scatterController = new Scatter3DController(boundingRect().toRect(), new Declarative3DScene);
setSharedController(m_scatterController);
// TODO: Uncomment when doing QTRD-2669
diff --git a/src/datavisualizationqml2/declarativescene.cpp b/src/datavisualizationqml2/declarativescene.cpp
new file mode 100644
index 00000000..b1fefa33
--- /dev/null
+++ b/src/datavisualizationqml2/declarativescene.cpp
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** 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 "declarativescene_p.h"
+
+QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+
+Declarative3DScene::Declarative3DScene(QObject *parent)
+ : Q3DScene(parent)
+{
+ QObject::connect(this, &Q3DScene::selectionQueryPositionChanged, this,
+ &Declarative3DScene::selectionQueryPositionChanged);
+}
+
+Declarative3DScene::~Declarative3DScene()
+{
+}
+
+void Declarative3DScene::setSelectionQueryPosition(const QPointF &point)
+{
+ Q3DScene::setSelectionQueryPosition(point.toPoint());
+}
+
+QPointF Declarative3DScene::selectionQueryPosition() const
+{
+ return QPointF(Q3DScene::selectionQueryPosition());
+}
+
+QPoint Declarative3DScene::invalidSelectionPoint() const
+{
+ return Q3DScene::invalidSelectionPoint();
+}
+
+QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualizationqml2/declarativescene_p.h b/src/datavisualizationqml2/declarativescene_p.h
new file mode 100644
index 00000000..4b6fef1c
--- /dev/null
+++ b/src/datavisualizationqml2/declarativescene_p.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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 DECLARATIVESCENE_P_H
+#define DECLARATIVESCENE_P_H
+
+#include "datavisualizationglobal_p.h"
+#include "q3dscene.h"
+
+QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+
+class Declarative3DScene : public Q3DScene
+{
+ Q_OBJECT
+ // This property is overloaded to use QPointF instead of QPoint to work around qml bug
+ // where Qt.point(0, 0) can't be assigned due to error "Cannot assign QPointF to QPoint".
+ Q_PROPERTY(QPointF selectionQueryPosition READ selectionQueryPosition WRITE setSelectionQueryPosition NOTIFY selectionQueryPositionChanged)
+ // This is static method in parent class, overload as constant property for qml.
+ Q_PROPERTY(QPoint invalidSelectionPoint READ invalidSelectionPoint CONSTANT)
+
+public:
+ Declarative3DScene(QObject *parent = 0);
+ virtual ~Declarative3DScene();
+
+ void setSelectionQueryPosition(const QPointF &point);
+ QPointF selectionQueryPosition() const;
+ QPoint invalidSelectionPoint() const;
+
+signals:
+ void selectionQueryPositionChanged(const QPointF position);
+};
+
+QT_DATAVISUALIZATION_END_NAMESPACE
+
+#endif
diff --git a/src/datavisualizationqml2/declarativeseries.cpp b/src/datavisualizationqml2/declarativeseries.cpp
index 35f6e315..0cb8bdf5 100644
--- a/src/datavisualizationqml2/declarativeseries.cpp
+++ b/src/datavisualizationqml2/declarativeseries.cpp
@@ -235,6 +235,11 @@ ColorGradient *DeclarativeScatter3DSeries::multiHighlightGradient() const
return m_multiHighlightGradient;
}
+int DeclarativeScatter3DSeries::invalidSelectionIndex() const
+{
+ return QScatter3DSeries::invalidSelectionIndex();
+}
+
void DeclarativeScatter3DSeries::handleBaseGradientUpdate()
{
if (m_baseGradient)
diff --git a/src/datavisualizationqml2/declarativeseries_p.h b/src/datavisualizationqml2/declarativeseries_p.h
index c9c3dc7a..8d191703 100644
--- a/src/datavisualizationqml2/declarativeseries_p.h
+++ b/src/datavisualizationqml2/declarativeseries_p.h
@@ -48,13 +48,16 @@ class DeclarativeBar3DSeries : public QBar3DSeries
{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
- // selectedBar property is overloaded to use QPointF instead of QPoint to work around qml bug
+ // This property is overloaded to use QPointF instead of QPoint to work around qml bug
// where Qt.point(0, 0) can't be assigned due to error "Cannot assign QPointF to QPoint".
Q_PROPERTY(QPointF selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged)
+ // This is static method in parent class, overload as constant property for qml.
+ Q_PROPERTY(QPointF invalidSelectionPosition READ invalidSelectionPosition CONSTANT)
Q_PROPERTY(ColorGradient *baseGradient READ baseGradient WRITE setBaseGradient NOTIFY baseGradientChanged)
Q_PROPERTY(ColorGradient *singleHighlightGradient READ singleHighlightGradient WRITE setSingleHighlightGradient NOTIFY singleHighlightGradientChanged)
Q_PROPERTY(ColorGradient *multiHighlightGradient READ multiHighlightGradient WRITE setMultiHighlightGradient NOTIFY multiHighlightGradientChanged)
Q_CLASSINFO("DefaultProperty", "seriesChildren")
+
public:
DeclarativeBar3DSeries(QObject *parent = 0);
virtual ~DeclarativeBar3DSeries();
@@ -64,7 +67,7 @@ public:
void setSelectedBar(const QPointF &position);
QPointF selectedBar() const;
- Q_INVOKABLE QPointF invalidSelectionPosition() const;
+ QPointF invalidSelectionPosition() const;
void setBaseGradient(ColorGradient *gradient);
ColorGradient *baseGradient() const;
@@ -97,7 +100,10 @@ class DeclarativeScatter3DSeries : public QScatter3DSeries
Q_PROPERTY(ColorGradient *baseGradient READ baseGradient WRITE setBaseGradient NOTIFY baseGradientChanged)
Q_PROPERTY(ColorGradient *singleHighlightGradient READ singleHighlightGradient WRITE setSingleHighlightGradient NOTIFY singleHighlightGradientChanged)
Q_PROPERTY(ColorGradient *multiHighlightGradient READ multiHighlightGradient WRITE setMultiHighlightGradient NOTIFY multiHighlightGradientChanged)
+ // This is static method in parent class, overload as constant property for qml.
+ Q_PROPERTY(int invalidSelectionIndex READ invalidSelectionIndex CONSTANT)
Q_CLASSINFO("DefaultProperty", "seriesChildren")
+
public:
DeclarativeScatter3DSeries(QObject *parent = 0);
virtual ~DeclarativeScatter3DSeries();
@@ -112,6 +118,8 @@ public:
void setMultiHighlightGradient(ColorGradient *gradient);
ColorGradient *multiHighlightGradient() const;
+ int invalidSelectionIndex() const;
+
public slots:
void handleBaseGradientUpdate();
void handleSingleHighlightGradientUpdate();
@@ -132,18 +140,23 @@ class DeclarativeSurface3DSeries : public QSurface3DSeries
{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
+ // This property is overloaded to use QPointF instead of QPoint to work around qml bug
+ // where Qt.point(0, 0) can't be assigned due to error "Cannot assign QPointF to QPoint".
Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged)
+ // This is static method in parent class, overload as constant property for qml.
+ Q_PROPERTY(QPointF invalidSelectionPosition READ invalidSelectionPosition CONSTANT)
Q_PROPERTY(ColorGradient *baseGradient READ baseGradient WRITE setBaseGradient NOTIFY baseGradientChanged)
Q_PROPERTY(ColorGradient *singleHighlightGradient READ singleHighlightGradient WRITE setSingleHighlightGradient NOTIFY singleHighlightGradientChanged)
Q_PROPERTY(ColorGradient *multiHighlightGradient READ multiHighlightGradient WRITE setMultiHighlightGradient NOTIFY multiHighlightGradientChanged)
Q_CLASSINFO("DefaultProperty", "seriesChildren")
+
public:
DeclarativeSurface3DSeries(QObject *parent = 0);
virtual ~DeclarativeSurface3DSeries();
void setSelectedPoint(const QPointF &position);
QPointF selectedPoint() const;
- Q_INVOKABLE QPointF invalidSelectionPosition() const;
+ QPointF invalidSelectionPosition() const;
QQmlListProperty<QObject> seriesChildren();
static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp
index efbec825..d4b4083b 100644
--- a/src/datavisualizationqml2/declarativesurface.cpp
+++ b/src/datavisualizationqml2/declarativesurface.cpp
@@ -19,6 +19,7 @@
#include "declarativesurface_p.h"
#include "qvalue3daxis.h"
#include "qitemmodelsurfacedataproxy.h"
+#include "declarativescene_p.h"
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
@@ -33,7 +34,7 @@ DeclarativeSurface::DeclarativeSurface(QQuickItem *parent)
setSmooth(true);
// Create the shared component on the main GUI thread.
- m_surfaceController = new Surface3DController(boundingRect().toRect());
+ m_surfaceController = new Surface3DController(boundingRect().toRect(), new Declarative3DScene);
setSharedController(m_surfaceController);
// TODO: Uncomment when doing QTRD-2669