summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/data')
-rw-r--r--src/datavisualization/data/qabstract3dseries_p.h1
-rw-r--r--src/datavisualization/data/qbar3dseries.cpp2
-rw-r--r--src/datavisualization/data/qsurface3dseries.cpp40
-rw-r--r--src/datavisualization/data/qsurface3dseries.h6
-rw-r--r--src/datavisualization/data/qsurface3dseries_p.h5
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;
};