From f272b13f025897e157480b9bc3e5b6f1163c6125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Wed, 4 Dec 2013 06:47:31 +0200 Subject: Item size per series for scatter Task-number: QTRD-2568 Change-Id: Ic137185304a5cc5ad16699cbb127035db86196cb Reviewed-by: Miikka Heikkinen --- src/datavisualization/data/qscatter3dseries.cpp | 40 ++++++++++++++++++++++++- src/datavisualization/data/qscatter3dseries.h | 6 ++++ src/datavisualization/data/qscatter3dseries_p.h | 2 ++ src/datavisualization/data/qscatterdataitem.cpp | 12 -------- src/datavisualization/data/qscatterdataitem.h | 5 ---- 5 files changed, 47 insertions(+), 18 deletions(-) (limited to 'src/datavisualization/data') diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp index 25e32ffe..4c2f368a 100644 --- a/src/datavisualization/data/qscatter3dseries.cpp +++ b/src/datavisualization/data/qscatter3dseries.cpp @@ -94,6 +94,14 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * clear the selection. */ +/*! + * \qmlproperty float Scatter3DSeries::itemSize + * + * Set item size for the series. Size must be between 0.0 and 1.0. Setting the size to 0.0 + * causes item size to be automatically scaled based on combined item count in all the series for + * the graph. Preset default is \c 0.0. + */ + /*! * \qmlmethod int Scatter3DSeries::invalidSelectionIndex() * \return an invalid index for selection. Set this index to selectedItem property if you @@ -175,6 +183,28 @@ int QScatter3DSeries::selectedItem() const return dptrc()->m_selectedItem; } +/*! + * \property QScatter3DSeries::selectedItem + * + * Set item \a size for the series. Size must be between 0.0f and 1.0f. Setting the size to 0.0f + * causes item size to be automatically scaled based on combined item count in all the series for + * the graph. Preset default is \c 0.0f. + */ +void QScatter3DSeries::setItemSize(float size) +{ + if (size < 0.0f || size > 1.0f) { + qWarning("Invalid size. Valid range for itemSize is 0.0f...1.0f"); + } else if (size != dptr()->m_itemSize) { + dptr()->setItemSize(size); + emit itemSizeChanged(size); + } +} + +float QScatter3DSeries::itemSize() const +{ + return dptrc()->m_itemSize; +} + /*! * \return an invalid index for selection. Set this index to selectedItem property if you * want to clear the selection. @@ -204,7 +234,8 @@ const QScatter3DSeriesPrivate *QScatter3DSeries::dptrc() const QScatter3DSeriesPrivate::QScatter3DSeriesPrivate(QScatter3DSeries *q) : QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeScatter), - m_selectedItem(Scatter3DController::invalidSelectionIndex()) + m_selectedItem(Scatter3DController::invalidSelectionIndex()), + m_itemSize(0.0f) { m_itemLabelFormat = QStringLiteral("@valueTitle: @valueLabel"); m_mesh = QAbstract3DSeries::MeshSphere; @@ -261,4 +292,11 @@ void QScatter3DSeriesPrivate::setSelectedItem(int index) } } +void QScatter3DSeriesPrivate::setItemSize(float size) +{ + m_itemSize = size; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/data/qscatter3dseries.h b/src/datavisualization/data/qscatter3dseries.h index 8c28f3a6..1d9abc11 100644 --- a/src/datavisualization/data/qscatter3dseries.h +++ b/src/datavisualization/data/qscatter3dseries.h @@ -31,6 +31,7 @@ class QT_DATAVISUALIZATION_EXPORT QScatter3DSeries : public QAbstract3DSeries Q_OBJECT Q_PROPERTY(QScatterDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged) Q_PROPERTY(int selectedItem READ selectedItem WRITE setSelectedItem NOTIFY selectedItemChanged) + Q_PROPERTY(float itemSize READ itemSize WRITE setItemSize NOTIFY itemSizeChanged) public: explicit QScatter3DSeries(QObject *parent = 0); @@ -42,11 +43,16 @@ public: void setSelectedItem(int index); int selectedItem() const; + + void setItemSize(float size); + float itemSize() const; + Q_INVOKABLE int invalidSelectionIndex() const; signals: void dataProxyChanged(QScatterDataProxy *proxy); void selectedItemChanged(int index); + void itemSizeChanged(float size); protected: explicit QScatter3DSeries(QScatter3DSeriesPrivate *d, QObject *parent = 0); diff --git a/src/datavisualization/data/qscatter3dseries_p.h b/src/datavisualization/data/qscatter3dseries_p.h index 0cf47bce..a09536c9 100644 --- a/src/datavisualization/data/qscatter3dseries_p.h +++ b/src/datavisualization/data/qscatter3dseries_p.h @@ -45,10 +45,12 @@ public: virtual void connectControllerAndProxy(Abstract3DController *newController); void setSelectedItem(int index); + void setItemSize(float size); private: QScatter3DSeries *qptr(); int m_selectedItem; + float m_itemSize; private: friend class QScatter3DSeries; diff --git a/src/datavisualization/data/qscatterdataitem.cpp b/src/datavisualization/data/qscatterdataitem.cpp index 480bc13b..2c0c0d5a 100644 --- a/src/datavisualization/data/qscatterdataitem.cpp +++ b/src/datavisualization/data/qscatterdataitem.cpp @@ -72,13 +72,11 @@ QScatterDataItem::~QScatterDataItem() QScatterDataItem &QScatterDataItem::operator=(const QScatterDataItem &other) { m_position = other.m_position; - //m_size = other.m_size; if (other.d_ptr) createExtraData(); else d_ptr = 0; - // TODO set extra data return *this; } @@ -123,16 +121,6 @@ QScatterDataItem &QScatterDataItem::operator=(const QScatterDataItem &other) * \return the Z component of the position of this data item. */ -//void QScatterDataItem::setSize(float size) -//{ -// m_size = size; -//} - -//const float &QScatterDataItem::size() const -//{ -// return m_size; -//} - /*! * \internal */ diff --git a/src/datavisualization/data/qscatterdataitem.h b/src/datavisualization/data/qscatterdataitem.h index ab6007db..7992864c 100644 --- a/src/datavisualization/data/qscatterdataitem.h +++ b/src/datavisualization/data/qscatterdataitem.h @@ -45,10 +45,6 @@ public: inline float y() const { return m_position.y(); } inline float z() const { return m_position.z(); } - // TODO: Will we ever support item specific size? If not, remove. - //void setSize(float size); - //float size() const; - protected: virtual void createExtraData(); @@ -56,7 +52,6 @@ protected: private: QVector3D m_position; - //float m_size; }; QT_DATAVISUALIZATION_END_NAMESPACE -- cgit v1.2.3