summaryrefslogtreecommitdiffstats
path: root/src/datavis3d
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-06 12:24:41 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-06 12:41:57 +0300
commit48ec1d061bfd202f68f8c6771917fa22f9e45733 (patch)
treeb3a0b33dfaca99ba693b4e1fc3c69faf73ac98cf /src/datavis3d
parent1ff7a47fe0f2a016e7b61adf3b99ca750347ec13 (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.h1
-rw-r--r--src/datavis3d/data/qbardataproxy.h1
-rw-r--r--src/datavis3d/data/qscatterdataproxy.h1
-rw-r--r--src/datavis3d/engine/bars3dcontroller.cpp21
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();
}