summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-02-10 07:41:25 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-02-10 08:22:53 +0200
commitffc2e2039f58de256a98da395b5d0e87d5a176fc (patch)
tree7d5e995b9e98ad7763430d5877528688adc6b095 /src/datavisualization/engine
parenta6961fbdb4e60fa0021fed623d8e8aaf1dd78a72 (diff)
Added selectedSeries property
Task-number: QTRD-2806 Change-Id: Icd895915f39e475fe9f2a006bebd956615474202 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/bars3dcontroller_p.h6
-rw-r--r--src/datavisualization/engine/q3dbars.cpp13
-rw-r--r--src/datavisualization/engine/q3dbars.h4
-rw-r--r--src/datavisualization/engine/q3dscatter.cpp12
-rw-r--r--src/datavisualization/engine/q3dscatter.h4
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp13
-rw-r--r--src/datavisualization/engine/q3dsurface.h4
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp2
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/scatter3dcontroller_p.h5
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h5
13 files changed, 78 insertions, 2 deletions
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index c49a6bb0..c84c445b 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -472,6 +472,7 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri
}
if (pos != m_selectedBar || series != m_selectedBarSeries) {
+ bool seriesChanged = (series != m_selectedBarSeries);
m_selectedBar = pos;
m_selectedBarSeries = series;
m_changeTracker.selectedBarChanged = true;
@@ -485,6 +486,9 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri
if (m_selectedBarSeries)
m_selectedBarSeries->dptr()->setSelectedBar(m_selectedBar);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedBarSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h
index d41af02d..9ea59c89 100644
--- a/src/datavisualization/engine/bars3dcontroller_p.h
+++ b/src/datavisualization/engine/bars3dcontroller_p.h
@@ -94,11 +94,14 @@ public:
QSizeF barSpacing();
bool isBarSpecRelative();
+ inline QBar3DSeries *selectedSeries() const { return m_selectedBarSeries; }
+
void setSelectionMode(QAbstract3DGraph::SelectionFlags mode);
void setSelectedBar(const QPoint &position, QBar3DSeries *series, bool enterSlice);
virtual void clearSelection();
- virtual void handleAxisAutoAdjustRangeChangedInOrientation(QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
+ virtual void handleAxisAutoAdjustRangeChangedInOrientation(
+ QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
virtual void handleSeriesVisibilityChangedBySender(QObject *sender);
virtual void handlePendingClick();
@@ -128,6 +131,7 @@ public slots:
signals:
void primarySeriesChanged(QBar3DSeries *series);
+ void selectedSeriesChanged(QBar3DSeries *series);
protected:
virtual QAbstract3DAxis *createDefaultAxis(QAbstract3DAxis::AxisOrientation orientation);
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 787033ad..7b37715f 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -104,6 +104,8 @@ Q3DBars::Q3DBars(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared->initializeOpenGL();
QObject::connect(dptr()->m_shared, &Bars3DController::primarySeriesChanged,
this, &Q3DBars::primarySeriesChanged);
+ QObject::connect(dptr()->m_shared, &Bars3DController::selectedSeriesChanged,
+ this, &Q3DBars::selectedSeriesChanged);
}
/*!
@@ -328,6 +330,17 @@ QValue3DAxis *Q3DBars::valueAxis() const
}
/*!
+ * \property Q3DBars::selectedSeries
+ *
+ * The selected series or \c null. If selectionMode has \c SelectionMultiSeries flag set, this
+ * property holds the series which owns the selected bar.
+ */
+QBar3DSeries *Q3DBars::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 06dcfedb..97e7c067 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -42,6 +42,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DBars : public QAbstract3DGraph
Q_PROPERTY(QCategory3DAxis *columnAxis READ columnAxis WRITE setColumnAxis NOTIFY columnAxisChanged)
Q_PROPERTY(QValue3DAxis *valueAxis READ valueAxis WRITE setValueAxis NOTIFY valueAxisChanged)
Q_PROPERTY(QBar3DSeries *primarySeries READ primarySeries WRITE setPrimarySeries NOTIFY primarySeriesChanged)
+ Q_PROPERTY(QBar3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DBars(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -76,6 +77,8 @@ public:
void releaseAxis(QAbstract3DAxis *axis);
QList<QAbstract3DAxis *> axes() const;
+ QBar3DSeries *selectedSeries() const;
+
signals:
void multiSeriesUniformChanged(bool uniform);
void barThicknessChanged(float thicknessRatio);
@@ -85,6 +88,7 @@ signals:
void columnAxisChanged(QCategory3DAxis *axis);
void valueAxisChanged(QValue3DAxis *axis);
void primarySeriesChanged(QBar3DSeries *series);
+ void selectedSeriesChanged(QBar3DSeries *series);
private:
Q3DBarsPrivate *dptr();
diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp
index db7d2491..7c7809f3 100644
--- a/src/datavisualization/engine/q3dscatter.cpp
+++ b/src/datavisualization/engine/q3dscatter.cpp
@@ -87,6 +87,8 @@ Q3DScatter::Q3DScatter(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared = new Scatter3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Scatter3DController::selectedSeriesChanged,
+ this, &Q3DScatter::selectedSeriesChanged);
}
/*!
@@ -202,6 +204,16 @@ QValue3DAxis *Q3DScatter::axisZ() const
}
/*!
+ * \property Q3DScatter::selectedSeries
+ *
+ * The selected series or \c null.
+ */
+QScatter3DSeries *Q3DScatter::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h
index 55158537..2d8516ee 100644
--- a/src/datavisualization/engine/q3dscatter.h
+++ b/src/datavisualization/engine/q3dscatter.h
@@ -37,6 +37,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DScatter : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QScatter3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DScatter(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -56,10 +57,13 @@ public:
void releaseAxis(QValue3DAxis *axis);
QList<QValue3DAxis *> axes() const;
+ QScatter3DSeries *selectedSeries() const;
+
signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QScatter3DSeries *series);
private:
Q3DScatterPrivate *dptr();
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index a8a8235e..5705cc30 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -100,6 +100,8 @@ Q3DSurface::Q3DSurface(const QSurfaceFormat *format, QWindow *parent)
dptr()->m_shared = new Surface3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
dptr()->m_shared->initializeOpenGL();
+ QObject::connect(dptr()->m_shared, &Surface3DController::selectedSeriesChanged,
+ this, &Q3DSurface::selectedSeriesChanged);
}
/*!
@@ -223,6 +225,17 @@ QValue3DAxis *Q3DSurface::axisZ() const
}
/*!
+ * \property Q3DSurface::selectedSeries
+ *
+ * The selected series or \c null. If selectionMode has \c SelectionMultiSeries flag set, this
+ * property holds the series which owns the selected point.
+ */
+QSurface3DSeries *Q3DSurface::selectedSeries() const
+{
+ return dptrc()->m_shared->selectedSeries();
+}
+
+/*!
* Adds \a axis to the graph. The axes added via addAxis are not yet taken to use,
* addAxis is simply used to give the ownership of the \a axis to the graph.
* The \a axis must not be null or added to another graph.
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index 7fb6e58a..673ce4d7 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -35,6 +35,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged)
Q_PROPERTY(QValue3DAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged)
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
+ Q_PROPERTY(QSurface3DSeries *selectedSeries READ selectedSeries NOTIFY selectedSeriesChanged)
public:
explicit Q3DSurface(const QSurfaceFormat *format = 0, QWindow *parent = 0);
@@ -55,10 +56,13 @@ public:
void releaseAxis(QValue3DAxis *axis);
QList<QValue3DAxis *> axes() const;
+ QSurface3DSeries *selectedSeries() const;
+
signals:
void axisXChanged(QValue3DAxis *axis);
void axisYChanged(QValue3DAxis *axis);
void axisZChanged(QValue3DAxis *axis);
+ void selectedSeriesChanged(QSurface3DSeries *series);
private:
Q3DSurfacePrivate *dptr();
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index adb34458..aeb4a0b6 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -94,7 +94,7 @@ QT_BEGIN_NAMESPACE_DATAVISUALIZATION
\value SelectionMultiSeries
Setting this mode means that items for all series at same position are highlighted, instead
of just the selected item. The actual selection in the other series doesn't change.
- Multi-series selection is only supported for Q3DBars.
+ Multi-series selection is not supported for Q3DScatter.
*/
/*!
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index a1850a3c..8495052e 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -303,6 +303,7 @@ void Scatter3DController::setSelectedItem(int index, QScatter3DSeries *series)
index = invalidSelectionIndex();
if (index != m_selectedItem || series != m_selectedItemSeries) {
+ bool seriesChanged = (series != m_selectedItemSeries);
m_selectedItem = index;
m_selectedItemSeries = series;
m_changeTracker.selectedItemChanged = true;
@@ -316,6 +317,9 @@ void Scatter3DController::setSelectedItem(int index, QScatter3DSeries *series)
if (m_selectedItemSeries)
m_selectedItemSeries->dptr()->setSelectedItem(m_selectedItem);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedItemSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/scatter3dcontroller_p.h b/src/datavisualization/engine/scatter3dcontroller_p.h
index 173d4e05..53d24549 100644
--- a/src/datavisualization/engine/scatter3dcontroller_p.h
+++ b/src/datavisualization/engine/scatter3dcontroller_p.h
@@ -93,6 +93,8 @@ public:
// Change selection mode
void setSelectionMode(QAbstract3DGraph::SelectionFlags mode);
+ inline QScatter3DSeries *selectedSeries() const { return m_selectedItemSeries; }
+
void setSelectedItem(int index, QScatter3DSeries *series);
static inline int invalidSelectionIndex() { return -1; }
virtual void clearSelection();
@@ -116,6 +118,9 @@ public slots:
void handleItemsRemoved(int startIndex, int count);
void handleItemsInserted(int startIndex, int count);
+signals:
+ void selectedSeriesChanged(QScatter3DSeries *series);
+
protected:
virtual void startRecordingRemovesAndInserts();
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index 553166e1..966a9d15 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -262,6 +262,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
}
if (pos != m_selectedPoint || series != m_selectedSeries) {
+ bool seriesChanged = (series != m_selectedSeries);
m_selectedPoint = pos;
m_selectedSeries = series;
m_changeTracker.selectedPointChanged = true;
@@ -275,6 +276,9 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
if (m_selectedSeries)
m_selectedSeries->dptr()->setSelectedPoint(m_selectedPoint);
+ if (seriesChanged)
+ emit selectedSeriesChanged(m_selectedSeries);
+
emitNeedRender();
}
}
diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h
index 64a57b3b..93839798 100644
--- a/src/datavisualization/engine/surface3dcontroller_p.h
+++ b/src/datavisualization/engine/surface3dcontroller_p.h
@@ -80,6 +80,8 @@ public:
void setSelectedPoint(const QPoint &position, QSurface3DSeries *series, bool enterSlice);
virtual void clearSelection();
+ inline QSurface3DSeries *selectedSeries() const { return m_selectedSeries; }
+
virtual void handleAxisAutoAdjustRangeChangedInOrientation(
QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust);
virtual void handleAxisRangeChangedBySender(QObject *sender);
@@ -103,6 +105,9 @@ public slots:
void handleFlatShadingSupportedChange(bool supported);
+signals:
+ void selectedSeriesChanged(QSurface3DSeries *series);
+
private:
void adjustValueAxisRange();