From 4913ce866f9dcd7763edd7cec8880bca8a7eea76 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Tue, 29 Nov 2016 16:02:18 +0200 Subject: Handle data proxy change on the controller Adds a connection to controllers to react dataProxyChange signal. Task-number: QTBUG-57291 Change-Id: Ia9ad6880418ec861381e1a5363ce38f8d0bda2e8 Reviewed-by: Miikka Heikkinen --- src/datavisualization/data/qbar3dseries.cpp | 2 ++ src/datavisualization/data/qscatter3dseries.cpp | 2 ++ src/datavisualization/data/qsurface3dseries.cpp | 2 ++ src/datavisualization/engine/bars3dcontroller.cpp | 7 ++++++- src/datavisualization/engine/scatter3dcontroller.cpp | 7 ++++++- src/datavisualization/engine/surface3dcontroller.cpp | 7 ++++++- 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/datavisualization/data/qbar3dseries.cpp b/src/datavisualization/data/qbar3dseries.cpp index 04aa218b..a89b1f3f 100644 --- a/src/datavisualization/data/qbar3dseries.cpp +++ b/src/datavisualization/data/qbar3dseries.cpp @@ -326,6 +326,8 @@ void QBar3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *newCon &Bars3DController::handleDataRowLabelsChanged); QObject::connect(barDataProxy, &QBarDataProxy::columnLabelsChanged, controller, &Bars3DController::handleDataColumnLabelsChanged); + QObject::connect(qptr(), &QBar3DSeries::dataProxyChanged, controller, + &Bars3DController::handleArrayReset); } } diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp index a674fa02..54873485 100644 --- a/src/datavisualization/data/qscatter3dseries.cpp +++ b/src/datavisualization/data/qscatter3dseries.cpp @@ -306,6 +306,8 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne controller, &Scatter3DController::handleItemsRemoved); QObject::connect(scatterDataProxy, &QScatterDataProxy::itemsInserted, controller, &Scatter3DController::handleItemsInserted); + QObject::connect(qptr(), &QScatter3DSeries::dataProxyChanged, + controller, &Scatter3DController::handleArrayReset); } } diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp index e2d1b03d..2e8e121d 100644 --- a/src/datavisualization/data/qsurface3dseries.cpp +++ b/src/datavisualization/data/qsurface3dseries.cpp @@ -440,6 +440,8 @@ void QSurface3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne &Surface3DController::handleRowsInserted); QObject::connect(surfaceDataProxy, &QSurfaceDataProxy::itemChanged, controller, &Surface3DController::handleItemChanged); + QObject::connect(qptr(), &QSurface3DSeries::dataProxyChanged, controller, + &Surface3DController::handleArrayReset); } } diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index 1cfc4e64..6b304026 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -147,7 +147,12 @@ void Bars3DController::synchDataToRenderer() void Bars3DController::handleArrayReset() { - QBar3DSeries *series = static_cast(sender())->series(); + QBar3DSeries *series; + if (qobject_cast(sender())) + series = static_cast(sender())->series(); + else + series = static_cast(sender()); + if (series->isVisible()) { adjustAxisRanges(); m_isDataDirty = true; diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp index 46249c3c..6fc29b20 100644 --- a/src/datavisualization/engine/scatter3dcontroller.cpp +++ b/src/datavisualization/engine/scatter3dcontroller.cpp @@ -135,7 +135,12 @@ QList Scatter3DController::scatterSeriesList() void Scatter3DController::handleArrayReset() { - QScatter3DSeries *series = static_cast(sender())->series(); + QScatter3DSeries *series; + if (qobject_cast(sender())) + series = static_cast(sender())->series(); + else + series = static_cast(sender()); + if (series->isVisible()) { adjustAxisRanges(); m_isDataDirty = true; diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp index 28327086..1a140a5c 100644 --- a/src/datavisualization/engine/surface3dcontroller.cpp +++ b/src/datavisualization/engine/surface3dcontroller.cpp @@ -321,7 +321,12 @@ void Surface3DController::clearSelection() void Surface3DController::handleArrayReset() { - QSurface3DSeries *series = static_cast(sender())->series(); + QSurface3DSeries *series; + if (qobject_cast(sender())) + series = static_cast(sender())->series(); + else + series = static_cast(sender()); + if (series->isVisible()) { adjustAxisRanges(); m_isDataDirty = true; -- cgit v1.2.3