diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-06 12:24:41 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-06 12:41:57 +0300 |
commit | 48ec1d061bfd202f68f8c6771917fa22f9e45733 (patch) | |
tree | b3a0b33dfaca99ba693b4e1fc3c69faf73ac98cf /src/datavis3d | |
parent | 1ff7a47fe0f2a016e7b61adf3b99ca750347ec13 (diff) |
Expose data proxy in QML
Change-Id: I1102520678f2c8ae2932ddb396b41655cfd538e9
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavis3d')
-rw-r--r-- | src/datavis3d/data/qabstractdataproxy.h | 1 | ||||
-rw-r--r-- | src/datavis3d/data/qbardataproxy.h | 1 | ||||
-rw-r--r-- | src/datavis3d/data/qscatterdataproxy.h | 1 | ||||
-rw-r--r-- | src/datavis3d/engine/bars3dcontroller.cpp | 21 |
4 files changed, 17 insertions, 7 deletions
diff --git a/src/datavis3d/data/qabstractdataproxy.h b/src/datavis3d/data/qabstractdataproxy.h index ccf66b20..6cd2386d 100644 --- a/src/datavis3d/data/qabstractdataproxy.h +++ b/src/datavis3d/data/qabstractdataproxy.h @@ -32,6 +32,7 @@ class QT_DATAVIS3D_EXPORT QAbstractDataProxy : public QObject Q_OBJECT Q_ENUMS(DataType) Q_PROPERTY(DataType type READ type) + Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat NOTIFY itemLabelFormatChanged) public: enum DataType { diff --git a/src/datavis3d/data/qbardataproxy.h b/src/datavis3d/data/qbardataproxy.h index 51191739..3338bc75 100644 --- a/src/datavis3d/data/qbardataproxy.h +++ b/src/datavis3d/data/qbardataproxy.h @@ -34,6 +34,7 @@ class QT_DATAVIS3D_EXPORT QBarDataProxy : public QAbstractDataProxy { Q_OBJECT + Q_PROPERTY(int rowCount READ rowCount) public: explicit QBarDataProxy(QObject *parent = 0); virtual ~QBarDataProxy(); diff --git a/src/datavis3d/data/qscatterdataproxy.h b/src/datavis3d/data/qscatterdataproxy.h index b8f505f9..d5897631 100644 --- a/src/datavis3d/data/qscatterdataproxy.h +++ b/src/datavis3d/data/qscatterdataproxy.h @@ -32,6 +32,7 @@ class QT_DATAVIS3D_EXPORT QScatterDataProxy : public QAbstractDataProxy { Q_OBJECT + Q_PROPERTY(int itemCount READ itemCount) public: explicit QScatterDataProxy(QObject *parent = 0); virtual ~QScatterDataProxy(); diff --git a/src/datavis3d/engine/bars3dcontroller.cpp b/src/datavis3d/engine/bars3dcontroller.cpp index e8b5fe30..1591eb46 100644 --- a/src/datavis3d/engine/bars3dcontroller.cpp +++ b/src/datavis3d/engine/bars3dcontroller.cpp @@ -290,6 +290,8 @@ void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy) &Bars3DController::handleItemChanged); adjustValueAxisRange(); + + // Always clear selection on proxy change setSelectedBarPos(noSelectionPoint()); } @@ -298,7 +300,8 @@ void Bars3DController::handleArrayReset() setSlicingActive(false); adjustValueAxisRange(); m_isDataDirty = true; - setSelectedBarPos(noSelectionPoint()); + // Clear selection unless still valid + setSelectedBarPos(m_selectedBarPos); emitNeedRender(); } @@ -335,9 +338,10 @@ void Bars3DController::handleRowsRemoved(int startIndex, int count) setSlicingActive(false); adjustValueAxisRange(); m_isDataDirty = true; - // TODO this will break once data window offset is implemented - if (startIndex >= static_cast<QBarDataProxy *>(m_data)->rowCount()) - setSelectedBarPos(noSelectionPoint()); + + // Clear selection unless still valid + setSelectedBarPos(m_selectedBarPos); + emitNeedRender(); } @@ -447,8 +451,8 @@ void Bars3DController::setDataWindow(int rowCount, int columnCount) adjustValueAxisRange(); - if (m_selectedBarPos.x() >= rowCount || m_selectedBarPos.y() >= columnCount) - setSelectedBarPos(noSelectionPoint()); + // Clear selection unless still valid + setSelectedBarPos(m_selectedBarPos); m_changeTracker.sampleSpaceChanged = true; m_isDataDirty = true; // Render item array is recreated in renderer @@ -464,11 +468,14 @@ void Bars3DController::setSelectionMode(QDataVis::SelectionMode mode) void Bars3DController::setSelectedBarPos(const QPoint &position) { + // If the selection is outside data window or targets non-existent + // bar, clear selection instead. // TODO this will break once data window offset is implemented QPoint pos = position; if (pos.x() < 0 || pos.y() < 0 || pos.x() >= static_cast<QBarDataProxy *>(m_data)->rowCount() - || pos.y() >= static_cast<QBarDataProxy *>(m_data)->rowAt(pos.x())->size()) { + || pos.y() >= static_cast<QBarDataProxy *>(m_data)->rowAt(pos.x())->size() + || pos.x() >= m_rowCount || pos.y() >= m_columnCount) { pos = noSelectionPoint(); } |