From a28cdb72a4ea768a898ca07f0df0fa3c17c073a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Tue, 10 Sep 2013 11:42:13 +0300 Subject: Module renamed Task-number: QTRD-2224 Change-Id: Iec18b6121809300b11d85445281d3c626c434f35 Reviewed-by: Miikka Heikkinen --- .../data/qitemmodelscatterdataproxy.cpp | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 src/datavisualization/data/qitemmodelscatterdataproxy.cpp (limited to 'src/datavisualization/data/qitemmodelscatterdataproxy.cpp') diff --git a/src/datavisualization/data/qitemmodelscatterdataproxy.cpp b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp new file mode 100644 index 00000000..d647e5bc --- /dev/null +++ b/src/datavisualization/data/qitemmodelscatterdataproxy.cpp @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** 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 "qitemmodelscatterdataproxy_p.h" +#include "scatteritemmodelhandler_p.h" +#include + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +/*! + * \class QItemModelScatterDataProxy + * \inmodule QtDataVisualization + * \brief Proxy class for Q3DScatter data model mapping. + * \since 1.0.0 + * + * QItemModelScatterDataProxy allows you to use QAbstractItemModel derived models as a data source + * for Q3DScatter. It maps roles defined in QItemModelScatterDataMapping to roles in the model. + */ + +/*! + * Constructs QItemModelScatterDataProxy. + */ +QItemModelScatterDataProxy::QItemModelScatterDataProxy() : + QScatterDataProxy(new QItemModelScatterDataProxyPrivate(this)) +{ +} + +/*! + * Constructs QItemModelScatterDataProxy with \a itemModel and \a mapping. Does not take ownership + * of the model or the mapping, but does connect to them to listen for changes. + */ +QItemModelScatterDataProxy::QItemModelScatterDataProxy(const QAbstractItemModel *itemModel, + QItemModelScatterDataMapping *mapping) : + QScatterDataProxy(new QItemModelScatterDataProxyPrivate(this)) +{ + dptr()->m_itemModelHandler->setItemModel(itemModel); + dptr()->m_itemModelHandler->setActiveMapping(mapping); +} + +/*! + * Destroys QItemModelScatterDataProxy. + */ +QItemModelScatterDataProxy::~QItemModelScatterDataProxy() +{ +} + +/*! + * \property QItemModelScatterDataProxy::itemModel + * + * Defines item model. Does not take ownership of the model, but does connect to it to listen for + * changes. + */ +void QItemModelScatterDataProxy::setItemModel(const QAbstractItemModel *itemModel) +{ + dptr()->m_itemModelHandler->setItemModel(itemModel); +} + +const QAbstractItemModel *QItemModelScatterDataProxy::itemModel() const +{ + return dptrc()->m_itemModelHandler->itemModel(); +} + +/*! + * \property QItemModelScatterDataProxy::activeMapping + * + * Defines data mapping. Proxy takes ownership of the \a mapping. + * Modifying a mapping that is set to the proxy will trigger data set re-resolving. + */ +void QItemModelScatterDataProxy::setActiveMapping(QItemModelScatterDataMapping *mapping) +{ + dptr()->m_itemModelHandler->setActiveMapping(mapping); +} + +QItemModelScatterDataMapping *QItemModelScatterDataProxy::activeMapping() const +{ + return static_cast(dptrc()->m_itemModelHandler->activeMapping()); +} + +/*! + * Transfers the ownership of the \a mapping to this proxy. The mapping is not taken to use yet. + * \sa setActiveMapping(), releaseMapping() + */ +void QItemModelScatterDataProxy::addMapping(QItemModelScatterDataMapping *mapping) +{ + dptr()->m_itemModelHandler->addMapping(mapping); +} + +/*! + * Releases the ownership of the \a mapping back to the caller. If the mapping was the currently + * active one, no mapping remains active after this call. + */ +void QItemModelScatterDataProxy::releaseMapping(QItemModelScatterDataMapping *mapping) +{ + dptr()->m_itemModelHandler->releaseMapping(mapping); +} + +/*! + * \return list of mappings owned by the proxy. + */ +QList QItemModelScatterDataProxy::mappings() const +{ + QList retList; + QList abstractList = dptrc()->m_itemModelHandler->mappings(); + foreach (QAbstractDataMapping *mapping, abstractList) + retList.append(static_cast(mapping)); + + return retList; +} + +/*! + * \internal + */ +QItemModelScatterDataProxyPrivate *QItemModelScatterDataProxy::dptr() +{ + return static_cast(d_ptr.data()); +} + +/*! + * \internal + */ +const QItemModelScatterDataProxyPrivate *QItemModelScatterDataProxy::dptrc() const +{ + return static_cast(d_ptr.data()); +} + +// QItemModelScatterDataProxyPrivate + +QItemModelScatterDataProxyPrivate::QItemModelScatterDataProxyPrivate(QItemModelScatterDataProxy *q) + : QScatterDataProxyPrivate(q), + m_itemModelHandler(new ScatterItemModelHandler(q)) +{ +} + +QItemModelScatterDataProxyPrivate::~QItemModelScatterDataProxyPrivate() +{ + delete m_itemModelHandler; +} + +QItemModelScatterDataProxy *QItemModelScatterDataProxyPrivate::qptr() +{ + return static_cast(q_ptr); +} + +QT_DATAVISUALIZATION_END_NAMESPACE -- cgit v1.2.3