From 27241b083df419f3a2de928c1d3f5dd8f6459030 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 15 Nov 2013 10:39:15 +0200 Subject: Enable giving series and proxies as child items in QML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTRD-2359 Change-Id: I37558b169bb60ee90993c1a8703da0c6745a9db0 Reviewed-by: Mika Salmela Reviewed-by: Pasi Keränen --- .../datavisualizationqml2.pro | 6 +- .../datavisualizationqml2_plugin.cpp | 16 +++- .../datavisualizationqml2_plugin.h | 4 + src/datavisualizationqml2/declarativebars_p.h | 1 + src/datavisualizationqml2/declarativescatter_p.h | 1 + src/datavisualizationqml2/declarativeseries.cpp | 92 ++++++++++++++++++++++ src/datavisualizationqml2/declarativeseries_p.h | 81 +++++++++++++++++++ src/datavisualizationqml2/declarativesurface_p.h | 1 + 8 files changed, 196 insertions(+), 6 deletions(-) create mode 100644 src/datavisualizationqml2/declarativeseries.cpp create mode 100644 src/datavisualizationqml2/declarativeseries_p.h (limited to 'src/datavisualizationqml2') diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro index db684988..073b1250 100644 --- a/src/datavisualizationqml2/datavisualizationqml2.pro +++ b/src/datavisualizationqml2/datavisualizationqml2.pro @@ -26,7 +26,8 @@ SOURCES += \ declarativesurface.cpp \ declarativesurfacerenderer.cpp \ abstractdeclarative.cpp \ - colorgradient.cpp + colorgradient.cpp \ + declarativeseries.cpp HEADERS += \ datavisualizationqml2_plugin.h \ @@ -37,7 +38,8 @@ HEADERS += \ declarativesurface_p.h \ declarativesurfacerenderer_p.h \ abstractdeclarative_p.h \ - colorgradient_p.h + colorgradient_p.h \ + declarativeseries_p.h OTHER_FILES = qmldir diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp index 4e47ba53..7e7f636a 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp @@ -43,6 +43,14 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) QLatin1String("Trying to create uncreatable: AbstractGraph3D.")); qmlRegisterUncreatableType(uri, 1, 0, "Scene3D", QLatin1String("Trying to create uncreatable: Scene3D.")); + qmlRegisterUncreatableType(uri, 1, 0, "Abstract3DSeries", + QLatin1String("Trying to create uncreatable: Abstract3DSeries.")); + qmlRegisterUncreatableType(uri, 1, 0, "QBar3DSeries", + QLatin1String("Trying to create uncreatable: QBar3DSeries, use Bar3DSeries instead.")); + qmlRegisterUncreatableType(uri, 1, 0, "QScatter3DSeries", + QLatin1String("Trying to create uncreatable: QScatter3DSeries, use Scatter3DSeries instead.")); + qmlRegisterUncreatableType(uri, 1, 0, "QSurface3DSeries", + QLatin1String("Trying to create uncreatable: QSurface3DSeries, use Surface3DSeries instead.")); qmlRegisterType(uri, 1, 0, "BarDataMapping"); qmlRegisterType(uri, 1, 0, "ScatterDataMapping"); @@ -62,12 +70,12 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) qmlRegisterType(uri, 1, 0, "ItemModelSurfaceDataProxy"); qmlRegisterType(uri, 1, 0, "HeightMapSurfaceDataProxy"); - qmlRegisterType(uri, 1, 0, "Bar3DSeries"); - qmlRegisterType(uri, 1, 0, "Scatter3DSeries"); - qmlRegisterType(uri, 1, 0, "Surface3DSeries"); - qmlRegisterType(uri, 1, 0, "ColorGradientStop"); qmlRegisterType(uri, 1, 0, "ColorGradient"); + + qmlRegisterType(uri, 1, 0, "Bar3DSeries"); + qmlRegisterType(uri, 1, 0, "Scatter3DSeries"); + qmlRegisterType(uri, 1, 0, "Surface3DSeries"); } QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h index d74def9d..2635dcbd 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h @@ -39,6 +39,7 @@ #include "qbar3dseries.h" #include "qscatter3dseries.h" #include "qsurface3dseries.h" +#include "declarativeseries_p.h" #include @@ -76,6 +77,9 @@ QML_DECLARE_TYPE(QAbstract3DSeries) QML_DECLARE_TYPE(QBar3DSeries) QML_DECLARE_TYPE(QScatter3DSeries) QML_DECLARE_TYPE(QSurface3DSeries) +QML_DECLARE_TYPE(DeclarativeBar3DSeries) +QML_DECLARE_TYPE(DeclarativeScatter3DSeries) +QML_DECLARE_TYPE(DeclarativeSurface3DSeries) QML_DECLARE_TYPE(ColorGradientStop) QML_DECLARE_TYPE(ColorGradient) diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index c3808b7b..a54e5ff7 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -59,6 +59,7 @@ class DeclarativeBars : public AbstractDeclarative Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(QPointF selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeBars(QQuickItem *parent = 0); diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index e229c0d5..20455b29 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -54,6 +54,7 @@ class DeclarativeScatter : public AbstractDeclarative Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(int selectedItemIndex READ selectedItemIndex WRITE setSelectedItemIndex NOTIFY selectedItemIndexChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeScatter(QQuickItem *parent = 0); diff --git a/src/datavisualizationqml2/declarativeseries.cpp b/src/datavisualizationqml2/declarativeseries.cpp new file mode 100644 index 00000000..81bbb649 --- /dev/null +++ b/src/datavisualizationqml2/declarativeseries.cpp @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** 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 "declarativeseries_p.h" +#include "qbardataproxy.h" +#include "qscatterdataproxy.h" +#include "qsurfacedataproxy.h" + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +DeclarativeBar3DSeries::DeclarativeBar3DSeries(QObject *parent) + : QBar3DSeries(parent) +{ +} + +DeclarativeBar3DSeries::~DeclarativeBar3DSeries() +{ +} + +QQmlListProperty DeclarativeBar3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeBar3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeBar3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QBarDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +DeclarativeScatter3DSeries::DeclarativeScatter3DSeries(QObject *parent) + : QScatter3DSeries(parent) +{ +} + +DeclarativeScatter3DSeries::~DeclarativeScatter3DSeries() +{ +} + +QQmlListProperty DeclarativeScatter3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeScatter3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeScatter3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QScatterDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +DeclarativeSurface3DSeries::DeclarativeSurface3DSeries(QObject *parent) + : QSurface3DSeries(parent) +{ +} + +DeclarativeSurface3DSeries::~DeclarativeSurface3DSeries() +{ +} + +QQmlListProperty DeclarativeSurface3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeSurface3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeSurface3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QSurfaceDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativeseries_p.h b/src/datavisualizationqml2/declarativeseries_p.h new file mode 100644 index 00000000..cb6b76c2 --- /dev/null +++ b/src/datavisualizationqml2/declarativeseries_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** 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 DECLARATIVESERIES_P_H +#define DECLARATIVESERIES_P_H + +#include "datavisualizationglobal_p.h" +#include "qbar3dseries.h" +#include "qscatter3dseries.h" +#include "qsurface3dseries.h" +#include + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +class DeclarativeBar3DSeries : public QBar3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeBar3DSeries(QObject *parent = 0); + virtual ~DeclarativeBar3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +class DeclarativeScatter3DSeries : public QScatter3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeScatter3DSeries(QObject *parent = 0); + virtual ~DeclarativeScatter3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +class DeclarativeSurface3DSeries : public QSurface3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeSurface3DSeries(QObject *parent = 0); + virtual ~DeclarativeSurface3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +QT_DATAVISUALIZATION_END_NAMESPACE + +#endif diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index c6284a9b..7e55a594 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -56,6 +56,7 @@ class DeclarativeSurface : public AbstractDeclarative Q_PROPERTY(ColorGradient *gradient READ gradient WRITE setGradient) Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeSurface(QQuickItem *parent = 0); -- cgit v1.2.3