summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surface3dcontroller.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-04 14:48:34 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-02-05 10:26:36 +0200
commit79f3a4d7aa2fcbdc5df133ede88a367aa5870bd3 (patch)
treea66a16e576a4918f20b1a388d8fd3c5150603e57 /src/datavisualization/engine/surface3dcontroller.cpp
parent81234154b77ad079999542a4dd4bee454c46fb26 (diff)
Add qmloscilloscope example
+Fix itemAt() in surface proxy +Add itemAt(QPoint) in bar and surface proxies +Misc fixes to other examples Task-number: QTRD-2816 Change-Id: I5e06cfce98f74719a20885e3ca5a1e6fefb23a9c Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index 0eb66d0e..5aeecb20 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -103,7 +103,7 @@ void Surface3DController::handleAxisRangeChangedBySender(QObject *sender)
Abstract3DController::handleAxisRangeChangedBySender(sender);
// Update selected point - may be moved offscreen
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
+ setSelectedPoint(m_selectedPoint, m_selectedSeries, false);
}
void Surface3DController::handleSeriesVisibilityChangedBySender(QObject *sender)
@@ -111,10 +111,6 @@ void Surface3DController::handleSeriesVisibilityChangedBySender(QObject *sender)
Abstract3DController::handleSeriesVisibilityChangedBySender(sender);
adjustValueAxisRange();
-
- // Visibility changes may require disabling/enabling slicing,
- // so just reset selection to ensure everything is still valid.
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
}
void Surface3DController::handlePendingClick()
@@ -123,7 +119,7 @@ void Surface3DController::handlePendingClick()
QPoint position = m_renderer->clickedPosition();
QSurface3DSeries *series = static_cast<QSurface3DSeries *>(m_renderer->clickedSeries());
- setSelectedPoint(position, series);
+ setSelectedPoint(position, series, true);
m_renderer->resetClickedStatus();
}
@@ -154,7 +150,7 @@ void Surface3DController::addSeries(QAbstract3DSeries *series)
QSurface3DSeries *surfaceSeries = static_cast<QSurface3DSeries *>(series);
if (surfaceSeries->selectedPoint() != invalidSelectionPosition())
- setSelectedPoint(surfaceSeries->selectedPoint(), surfaceSeries);
+ setSelectedPoint(surfaceSeries->selectedPoint(), surfaceSeries, false);
}
void Surface3DController::removeSeries(QAbstract3DSeries *series)
@@ -164,7 +160,7 @@ void Surface3DController::removeSeries(QAbstract3DSeries *series)
Abstract3DController::removeSeries(series);
if (m_selectedSeries == series)
- setSelectedPoint(invalidSelectionPosition(), 0);
+ setSelectedPoint(invalidSelectionPosition(), 0, false);
if (wasVisible)
adjustValueAxisRange();
@@ -203,7 +199,7 @@ void Surface3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode
if (mode != oldMode) {
// Refresh selection upon mode change to ensure slicing is correctly updated
// according to series the visibility.
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
+ setSelectedPoint(m_selectedPoint, m_selectedSeries, true);
// Special case: Always deactivate slicing when changing away from slice
// automanagement, as this can't be handled in setSelectedBar.
@@ -215,7 +211,7 @@ void Surface3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode
}
}
-void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSeries *series)
+void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSeries *series, bool enterSlice)
{
// If the selection targets non-existent point, clear selection instead.
QPoint pos = position;
@@ -253,7 +249,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
if (item.x() < axisMinX || item.x() > axisMaxX
|| item.z() < axisMinZ || item.z() > axisMaxZ) {
scene()->setSlicingActive(false);
- } else {
+ } else if (enterSlice) {
scene()->setSlicingActive(true);
}
}
@@ -280,7 +276,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
void Surface3DController::clearSelection()
{
- setSelectedPoint(invalidSelectionPosition(), 0);
+ setSelectedPoint(invalidSelectionPosition(), 0, false);
}
void Surface3DController::handleArrayReset()
@@ -291,7 +287,7 @@ void Surface3DController::handleArrayReset()
m_isDataDirty = true;
}
// Clear selection unless still valid
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
+ setSelectedPoint(m_selectedPoint, m_selectedSeries, false);
emitNeedRender();
}
@@ -335,7 +331,7 @@ void Surface3DController::handleRowsChanged(int startIndex, int count)
adjustValueAxisRange();
// Clear selection unless still valid
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
+ setSelectedPoint(m_selectedPoint, m_selectedSeries, false);
emitNeedRender();
}
}
@@ -361,7 +357,7 @@ void Surface3DController::handleItemChanged(int rowIndex, int columnIndex)
adjustValueAxisRange();
// Clear selection unless still valid
- setSelectedPoint(m_selectedPoint, m_selectedSeries);
+ setSelectedPoint(m_selectedPoint, m_selectedSeries, false);
emitNeedRender();
}
}
@@ -389,7 +385,7 @@ void Surface3DController::handleRowsInserted(int startIndex, int count)
int selectedRow = m_selectedPoint.x();
if (startIndex <= selectedRow) {
selectedRow += count;
- setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries);
+ setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries, false);
}
}
@@ -415,7 +411,7 @@ void Surface3DController::handleRowsRemoved(int startIndex, int count)
else
selectedRow -= count; // Move selected row down by amount of rows removed
- setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries);
+ setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries, false);
}
}