diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-22 09:26:46 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-22 09:59:10 +0200 |
commit | fe2e12ffd7bb495634a66dc9c3e0d0fcbcfeb0df (patch) | |
tree | c67b57f7a0a82a81f165f007b8d44a2e16aa0db5 /src/datavisualization/data | |
parent | 4588556895bc14803e3ad884e89eb988b751e6be (diff) |
Multi series selection part 3: surface
Task-number: QTRD-2556
Change-Id: I3a465c1bfff95f6c89d2f473f9e235c6079b8116
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/data')
-rw-r--r-- | src/datavisualization/data/qabstract3dseries_p.h | 1 | ||||
-rw-r--r-- | src/datavisualization/data/qbar3dseries.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/data/qsurface3dseries.cpp | 40 | ||||
-rw-r--r-- | src/datavisualization/data/qsurface3dseries.h | 6 | ||||
-rw-r--r-- | src/datavisualization/data/qsurface3dseries_p.h | 5 |
5 files changed, 52 insertions, 2 deletions
diff --git a/src/datavisualization/data/qabstract3dseries_p.h b/src/datavisualization/data/qabstract3dseries_p.h index a82c3554..a5dbe867 100644 --- a/src/datavisualization/data/qabstract3dseries_p.h +++ b/src/datavisualization/data/qabstract3dseries_p.h @@ -68,6 +68,7 @@ private: friend class Scatter3DController; friend class QBar3DSeries; friend class QScatter3DSeries; + friend class QSurface3DSeries; }; QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/data/qbar3dseries.cpp b/src/datavisualization/data/qbar3dseries.cpp index ac292e5e..0e6bdd60 100644 --- a/src/datavisualization/data/qbar3dseries.cpp +++ b/src/datavisualization/data/qbar3dseries.cpp @@ -136,7 +136,7 @@ QBarDataProxy *QBar3DSeries::dataProxy() const } /*! - * \property Q3DBars::selectedBar + * \property QBar3DSeries::selectedBar * * Selects a bar at the \a position. The \a position is the (row, column) position in * the data array of the series. diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp index d17daeb1..98d406c0 100644 --- a/src/datavisualization/data/qsurface3dseries.cpp +++ b/src/datavisualization/data/qsurface3dseries.cpp @@ -126,6 +126,35 @@ QSurfaceDataProxy *QSurface3DSeries::dataProxy() const } /*! + * \property QSurface3DSeries::selectedPoint + * + * 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. + * If this series is added to a graph, the graph can adjust the selection according to user + * interaction or if it becomes invalid. + */ +void QSurface3DSeries::setSelectedPoint(const QPoint &position) +{ + // Don't do this in private to avoid loops, as that is used for callback from controller. + if (d_ptr->m_controller) + static_cast<Surface3DController *>(d_ptr->m_controller)->setSelectedPoint(position, this); + else + dptr()->setSelectedPoint(position); +} + +QPoint QSurface3DSeries::selectedPoint() const +{ + return dptrc()->m_selectedPoint; +} + +QPoint QSurface3DSeries::invalidSelectionPosition() const +{ + return Surface3DController::invalidSelectionPosition(); +} + +/*! * \internal */ QSurface3DSeriesPrivate *QSurface3DSeries::dptr() @@ -144,7 +173,8 @@ const QSurface3DSeriesPrivate *QSurface3DSeries::dptrc() const // QSurface3DSeriesPrivate QSurface3DSeriesPrivate::QSurface3DSeriesPrivate(QSurface3DSeries *q) - : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeSurface) + : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeSurface), + m_selectedPoint(Surface3DController::invalidSelectionPosition()) { m_itemLabelFormat = QStringLiteral("(@xLabel, @yLabel, @zLabel)"); } @@ -188,4 +218,12 @@ void QSurface3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne } } +void QSurface3DSeriesPrivate::setSelectedPoint(const QPoint &position) +{ + if (position != m_selectedPoint) { + m_selectedPoint = position; + emit qptr()->selectedPointChanged(m_selectedPoint); + } +} + QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/data/qsurface3dseries.h b/src/datavisualization/data/qsurface3dseries.h index db432e41..e449af58 100644 --- a/src/datavisualization/data/qsurface3dseries.h +++ b/src/datavisualization/data/qsurface3dseries.h @@ -30,6 +30,7 @@ class QT_DATAVISUALIZATION_EXPORT QSurface3DSeries : public QAbstract3DSeries { Q_OBJECT Q_PROPERTY(QSurfaceDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged) + Q_PROPERTY(QPoint selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged) public: explicit QSurface3DSeries(QObject *parent = 0); @@ -39,8 +40,13 @@ public: void setDataProxy(QSurfaceDataProxy *proxy); QSurfaceDataProxy *dataProxy() const; + void setSelectedPoint(const QPoint &position); + QPoint selectedPoint() const; + QPoint invalidSelectionPosition() const; + signals: void dataProxyChanged(QSurfaceDataProxy *proxy); + void selectedPointChanged(QPoint position); protected: explicit QSurface3DSeries(QSurface3DSeriesPrivate *d, QObject *parent = 0); diff --git a/src/datavisualization/data/qsurface3dseries_p.h b/src/datavisualization/data/qsurface3dseries_p.h index 6e5d9337..a1752b77 100644 --- a/src/datavisualization/data/qsurface3dseries_p.h +++ b/src/datavisualization/data/qsurface3dseries_p.h @@ -43,9 +43,14 @@ public: virtual void setDataProxy(QAbstractDataProxy *proxy); virtual void connectControllerAndProxy(Abstract3DController *newController); + + void setSelectedPoint(const QPoint &position); + private: QSurface3DSeries *qptr(); + QPoint m_selectedPoint; + private: friend class QSurface3DSeries; }; |