summaryrefslogtreecommitdiffstats
path: root/src/datavisualizationqml2
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualizationqml2')
-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
12 files changed, 150 insertions, 14 deletions
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