summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data/qsurface3dseries.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-11-22 09:26:46 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-11-22 09:59:10 +0200
commitfe2e12ffd7bb495634a66dc9c3e0d0fcbcfeb0df (patch)
treec67b57f7a0a82a81f165f007b8d44a2e16aa0db5 /src/datavisualization/data/qsurface3dseries.cpp
parent4588556895bc14803e3ad884e89eb988b751e6be (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.cpp40
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