diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-15 10:39:15 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-15 12:43:19 +0200 |
commit | 27241b083df419f3a2de928c1d3f5dd8f6459030 (patch) | |
tree | cfe9c73f6b5b35a58a66700f0e4e5187120203ed /src/datavisualizationqml2 | |
parent | cc22cc40e889b5b2f0e49ce32f660395cef865b7 (diff) |
Enable giving series and proxies as child items in QML
Task-number: QTRD-2359
Change-Id: I37558b169bb60ee90993c1a8703da0c6745a9db0
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
Diffstat (limited to 'src/datavisualizationqml2')
8 files changed, 196 insertions, 6 deletions
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<Q3DScene>(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", + QLatin1String("Trying to create uncreatable: QBar3DSeries, use Bar3DSeries instead.")); + qmlRegisterUncreatableType<QScatter3DSeries>(uri, 1, 0, "QScatter3DSeries", + QLatin1String("Trying to create uncreatable: QScatter3DSeries, use Scatter3DSeries instead.")); + qmlRegisterUncreatableType<QSurface3DSeries>(uri, 1, 0, "QSurface3DSeries", + QLatin1String("Trying to create uncreatable: QSurface3DSeries, use Surface3DSeries instead.")); qmlRegisterType<QItemModelBarDataMapping>(uri, 1, 0, "BarDataMapping"); qmlRegisterType<QItemModelScatterDataMapping>(uri, 1, 0, "ScatterDataMapping"); @@ -62,12 +70,12 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) qmlRegisterType<QItemModelSurfaceDataProxy>(uri, 1, 0, "ItemModelSurfaceDataProxy"); qmlRegisterType<QHeightMapSurfaceDataProxy>(uri, 1, 0, "HeightMapSurfaceDataProxy"); - qmlRegisterType<QBar3DSeries>(uri, 1, 0, "Bar3DSeries"); - qmlRegisterType<QScatter3DSeries>(uri, 1, 0, "Scatter3DSeries"); - qmlRegisterType<QSurface3DSeries>(uri, 1, 0, "Surface3DSeries"); - qmlRegisterType<ColorGradientStop>(uri, 1, 0, "ColorGradientStop"); qmlRegisterType<ColorGradient>(uri, 1, 0, "ColorGradient"); + + qmlRegisterType<DeclarativeBar3DSeries>(uri, 1, 0, "Bar3DSeries"); + qmlRegisterType<DeclarativeScatter3DSeries>(uri, 1, 0, "Scatter3DSeries"); + qmlRegisterType<DeclarativeSurface3DSeries>(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 <QQmlExtensionPlugin> @@ -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<QBar3DSeries> 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<QScatter3DSeries> 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<QObject> DeclarativeBar3DSeries::seriesChildren() +{ + return QQmlListProperty<QObject>(this, this, &DeclarativeBar3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeBar3DSeries::appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element) +{ + QBarDataProxy *proxy = qobject_cast<QBarDataProxy *>(element); + if (proxy) + reinterpret_cast<DeclarativeBar3DSeries *>(list->data)->setDataProxy(proxy); +} + +DeclarativeScatter3DSeries::DeclarativeScatter3DSeries(QObject *parent) + : QScatter3DSeries(parent) +{ +} + +DeclarativeScatter3DSeries::~DeclarativeScatter3DSeries() +{ +} + +QQmlListProperty<QObject> DeclarativeScatter3DSeries::seriesChildren() +{ + return QQmlListProperty<QObject>(this, this, &DeclarativeScatter3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeScatter3DSeries::appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element) +{ + QScatterDataProxy *proxy = qobject_cast<QScatterDataProxy *>(element); + if (proxy) + reinterpret_cast<DeclarativeScatter3DSeries *>(list->data)->setDataProxy(proxy); +} + +DeclarativeSurface3DSeries::DeclarativeSurface3DSeries(QObject *parent) + : QSurface3DSeries(parent) +{ +} + +DeclarativeSurface3DSeries::~DeclarativeSurface3DSeries() +{ +} + +QQmlListProperty<QObject> DeclarativeSurface3DSeries::seriesChildren() +{ + return QQmlListProperty<QObject>(this, this, &DeclarativeSurface3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeSurface3DSeries::appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element) +{ + QSurfaceDataProxy *proxy = qobject_cast<QSurfaceDataProxy *>(element); + if (proxy) + reinterpret_cast<DeclarativeSurface3DSeries *>(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 <QQmlListProperty> + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +class DeclarativeBar3DSeries : public QBar3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeBar3DSeries(QObject *parent = 0); + virtual ~DeclarativeBar3DSeries(); + + QQmlListProperty<QObject> seriesChildren(); + static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element); +}; + +class DeclarativeScatter3DSeries : public QScatter3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeScatter3DSeries(QObject *parent = 0); + virtual ~DeclarativeScatter3DSeries(); + + QQmlListProperty<QObject> seriesChildren(); + static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element); +}; + +class DeclarativeSurface3DSeries : public QSurface3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeSurface3DSeries(QObject *parent = 0); + virtual ~DeclarativeSurface3DSeries(); + + QQmlListProperty<QObject> seriesChildren(); + static void appendSeriesChildren(QQmlListProperty<QObject> *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<QSurface3DSeries> seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeSurface(QQuickItem *parent = 0); |