diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-10 16:26:11 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-11 10:42:53 +0300 |
commit | d93f5f3b64fdb52cc150232f6b6d80ffdb57db78 (patch) | |
tree | 4a99ecc02c2e885b56abb1082527e482967b84f8 /src/datavisualization/engine | |
parent | d315336b202ec1c1260f96945a23fde6d2c41b69 (diff) |
QBarDataProxy now has list of row and column labels
Category axes use those labels if no explicit labels are set to them.
+ Other misc fixes
Task-number: QTRD-2252
Change-Id: Idc15e0cc1cdeb08195b2e2baeead9cfef2533e04
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/abstract3drenderer_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3dcontroller.cpp | 45 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3dcontroller_p.h | 5 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dscene.cpp | 1 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dwindow.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 1 |
7 files changed, 53 insertions, 5 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index 1419c0f4..c406f087 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -176,7 +176,7 @@ protected: bool m_renderPending; explicit Abstract3DController(QRect boundRect, QObject *parent = 0); - ~Abstract3DController(); + virtual ~Abstract3DController(); public: diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h index 1edca798..49a40209 100644 --- a/src/datavisualization/engine/abstract3drenderer_p.h +++ b/src/datavisualization/engine/abstract3drenderer_p.h @@ -86,7 +86,7 @@ protected: QString generateValueLabel(const QString &format, qreal value); public: - ~Abstract3DRenderer(); + virtual ~Abstract3DRenderer(); void updateDataModel(QAbstractDataProxy *dataProxy); diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index 90987fc5..1f4d44c0 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -21,7 +21,7 @@ #include "camerahelper_p.h" #include "q3dabstractaxis_p.h" #include "q3dvalueaxis_p.h" -#include "q3dcategoryaxis.h" +#include "q3dcategoryaxis_p.h" #include "qbardataproxy_p.h" #include <QMatrix4x4> @@ -128,11 +128,18 @@ void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy) &Bars3DController::handleRowsInserted); QObject::connect(barDataProxy, &QBarDataProxy::itemChanged, this, &Bars3DController::handleItemChanged); + QObject::connect(barDataProxy, &QBarDataProxy::rowLabelsChanged, this, + &Bars3DController::handleDataRowLabelsChanged); + QObject::connect(barDataProxy, &QBarDataProxy::columnLabelsChanged, this, + &Bars3DController::handleDataColumnLabelsChanged); adjustValueAxisRange(); // Always clear selection on proxy change setSelectedBarPos(noSelectionPoint()); + + handleDataRowLabelsChanged(); + handleDataColumnLabelsChanged(); } void Bars3DController::handleArrayReset() @@ -209,6 +216,26 @@ void Bars3DController::handleItemChanged(int rowIndex, int columnIndex) emitNeedRender(); } +void Bars3DController::handleDataRowLabelsChanged() +{ + if (m_axisX && m_data) { + // Grab a sublist equal to data window (no need to have more labels in axis) + // TODO once axis controls data window, this needs to change + QStringList subList = static_cast<QBarDataProxy *>(m_data)->rowLabels().mid(0, m_rowCount); + static_cast<Q3DCategoryAxis *>(m_axisX)->dptr()->setDataLabels(subList); + } +} + +void Bars3DController::handleDataColumnLabelsChanged() +{ + if (m_axisZ && m_data) { + // Grab a sublist equal to data window (no need to have more labels in axis) + // TODO once axis controls data window, this needs to change + QStringList subList = static_cast<QBarDataProxy *>(m_data)->columnLabels().mid(0, m_columnCount); + static_cast<Q3DCategoryAxis *>(m_axisZ)->dptr()->setDataLabels(subList); + } +} + void Bars3DController::handleSelectedBarPosChanged(const QPoint &position) { QPoint pos = position; @@ -235,6 +262,18 @@ QPoint Bars3DController::noSelectionPoint() return noSelectionPos; } +void Bars3DController::setAxisX(Q3DAbstractAxis *axis) +{ + Abstract3DController::setAxisX(axis); + handleDataRowLabelsChanged(); +} + +void Bars3DController::setAxisZ(Q3DAbstractAxis *axis) +{ + Abstract3DController::setAxisZ(axis); + handleDataColumnLabelsChanged(); +} + void Bars3DController::setBarSpecs(GLfloat thicknessRatio, const QSizeF &spacing, bool relative) { m_barThicknessRatio = thicknessRatio; @@ -296,6 +335,10 @@ void Bars3DController::setDataWindow(int rowCount, int columnCount) m_changeTracker.sampleSpaceChanged = true; m_isDataDirty = true; // Render item array is recreated in renderer + + handleDataRowLabelsChanged(); + handleDataColumnLabelsChanged(); + emitNeedRender(); } diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h index 69ead98a..6dbaf742 100644 --- a/src/datavisualization/engine/bars3dcontroller_p.h +++ b/src/datavisualization/engine/bars3dcontroller_p.h @@ -114,6 +114,9 @@ public: static QPoint noSelectionPoint(); + virtual void setAxisX(Q3DAbstractAxis *axis); + virtual void setAxisZ(Q3DAbstractAxis *axis); + public slots: void handleArrayReset(); void handleRowsAdded(int startIndex, int count); @@ -121,6 +124,8 @@ public slots: void handleRowsRemoved(int startIndex, int count); void handleRowsInserted(int startIndex, int count); void handleItemChanged(int rowIndex, int columnIndex); + void handleDataRowLabelsChanged(); + void handleDataColumnLabelsChanged(); void handleSelectedBarPosChanged(const QPoint &position); diff --git a/src/datavisualization/engine/q3dscene.cpp b/src/datavisualization/engine/q3dscene.cpp index 49c08bbc..b39daab6 100644 --- a/src/datavisualization/engine/q3dscene.cpp +++ b/src/datavisualization/engine/q3dscene.cpp @@ -28,6 +28,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE Q3DScene::Q3DScene(QObject *parent) : + QObject(parent), d_ptr(new Q3DScenePrivate(this)) { } diff --git a/src/datavisualization/engine/q3dwindow.h b/src/datavisualization/engine/q3dwindow.h index 4a76c677..c46e293a 100644 --- a/src/datavisualization/engine/q3dwindow.h +++ b/src/datavisualization/engine/q3dwindow.h @@ -36,7 +36,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DWindow : public QWindow, protected QOpenGLF public: explicit Q3DWindow(QWindow *parent = 0); - ~Q3DWindow(); + virtual ~Q3DWindow(); protected slots: void renderLater(); diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index f39a0228..55fb9d6f 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -232,7 +232,6 @@ void Surface3DRenderer::updateScene(Q3DScene *scene) void Surface3DRenderer::render(GLuint defaultFboHandle) { m_cachedScene->setUnderSideCameraEnabled(m_hasNegativeValues); - Q3DCamera *camera = m_cachedScene->camera(); if (defaultFboHandle) { glDepthMask(true); glEnable(GL_DEPTH_TEST); |