diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-11-20 14:49:06 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-11-21 10:26:32 +0200 |
commit | d12f993ca802ff02091d6a5141d2847641bc65a8 (patch) | |
tree | c4e5fe4811e6942ef51dca6f48a96a7e129fccc3 /src/datavisualization/data/qscatter3dseries.cpp | |
parent | 51d4a9fcba6089ba433ae126f554b50979220d07 (diff) |
Multi series selection part 2: scatter
Task-number: QTRD-2556
Change-Id: I9ee193141dff6603b47db28b0ed0682db6f914c8
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/data/qscatter3dseries.cpp')
-rw-r--r-- | src/datavisualization/data/qscatter3dseries.cpp | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp index f0374339..aff0f33c 100644 --- a/src/datavisualization/data/qscatter3dseries.cpp +++ b/src/datavisualization/data/qscatter3dseries.cpp @@ -126,6 +126,39 @@ QScatterDataProxy *QScatter3DSeries::dataProxy() const } /*! + * \property QScatter3DSeries::selectedItem + * + * Selects an item at the \a index. The \a index is the index in the data array of the series. + * Only one item can be selected at a time. + * To clear selection, set invalidSelectionIndex() as the \a index. + * If this series is added to a graph, the graph can adjust the selection according to user + * interaction or if it becomes invalid. Selecting an item on another added series will also + * clear the selection. + */ +void QScatter3DSeries::setSelectedItem(int index) +{ + // Don't do this in private to avoid loops, as that is used for callback from controller. + if (d_ptr->m_controller) + static_cast<Scatter3DController *>(d_ptr->m_controller)->setSelectedItem(index, this); + else + dptr()->setSelectedItem(index); +} + +int QScatter3DSeries::selectedItem() const +{ + return dptrc()->m_selectedItem; +} + +/*! + * \return an invalid index for selection. Set this index to selectedItem property if you + * want to clear the selection. + */ +int QScatter3DSeries::invalidSelectionIndex() const +{ + return Scatter3DController::invalidSelectionIndex(); +} + +/*! * \internal */ QScatter3DSeriesPrivate *QScatter3DSeries::dptr() @@ -144,7 +177,8 @@ const QScatter3DSeriesPrivate *QScatter3DSeries::dptrc() const // QScatter3DSeriesPrivate QScatter3DSeriesPrivate::QScatter3DSeriesPrivate(QScatter3DSeries *q) - : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeScatter) + : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeScatter), + m_selectedItem(Scatter3DController::invalidSelectionIndex()) { m_itemLabelFormat = QStringLiteral("@valueTitle: @valueLabel"); } @@ -179,7 +213,6 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne if (newController && scatterDataProxy) { Scatter3DController *controller = static_cast<Scatter3DController *>(newController); - QObject::connect(scatterDataProxy, &QScatterDataProxy::arrayReset, controller, &Scatter3DController::handleArrayReset); QObject::connect(scatterDataProxy, &QScatterDataProxy::itemsAdded, @@ -196,4 +229,12 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne } } +void QScatter3DSeriesPrivate::setSelectedItem(int index) +{ + if (index != m_selectedItem) { + m_selectedItem = index; + emit qptr()->selectedItemChanged(m_selectedItem); + } +} + QT_DATAVISUALIZATION_END_NAMESPACE |