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/qsurface3dseries.cpp | |
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/qsurface3dseries.cpp')
-rw-r--r-- | src/datavisualization/data/qsurface3dseries.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
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 |