diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-09 10:49:49 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-12-10 09:01:45 +0200 |
commit | 3573055abe42ff283d011d8550bc8495156338a1 (patch) | |
tree | bb45d4f7e32a0c63329d9f52639081162b34e17e /src/datavisualization/data | |
parent | 22557b312570cbefde584466a28f2b9bfcc570ba (diff) |
Move series specific visual elements to series, part 4
Colors to series
- Multiselection labels in bar slices still buggy
- Selection in bars doesn't work correctly if not all
series have items in that grid
Task-number: QTRD-2557
Change-Id: Icd38428e5337a26b8410476104bb1f1f784cdc7f
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/data')
-rw-r--r-- | src/datavisualization/data/qabstract3dseries.cpp | 311 | ||||
-rw-r--r-- | src/datavisualization/data/qabstract3dseries.h | 39 | ||||
-rw-r--r-- | src/datavisualization/data/qabstract3dseries_p.h | 65 | ||||
-rw-r--r-- | src/datavisualization/data/qscatterdataproxy.cpp | 3 |
4 files changed, 405 insertions, 13 deletions
diff --git a/src/datavisualization/data/qabstract3dseries.cpp b/src/datavisualization/data/qabstract3dseries.cpp index 93ce7fb0..46224813 100644 --- a/src/datavisualization/data/qabstract3dseries.cpp +++ b/src/datavisualization/data/qabstract3dseries.cpp @@ -91,6 +91,74 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE */ /*! + * \qmlproperty Theme3D.ColorStyle Abstract3DSeries::colorStyle + * + * Sets the color \a style for the series. + * See \l{Theme3D::colorStyle}{Theme3D.colorStyle} + * documentation for more information. + */ + +/*! + * \qmlproperty Color Abstract3DSeries::baseColor + * + * Sets the base \c color of the series. + * See \l{Theme3D::baseColor}{Theme3D.baseColor} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! + * \qmlproperty ColorGradient Abstract3DSeries::baseGradient + * + * Sets the base \c gradient of the series. + * See \l{Theme3D::baseGradient}{Theme3D.baseGradient} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! + * \qmlproperty Color Abstract3DSeries::singleHighlightColor + * + * Sets the single item highlight \c color of the series. + * See \l{Theme3D::singleHighlightColor}{Theme3D.singleHighlightColor} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! + * \qmlproperty ColorGradient Abstract3DSeries::singleHighlightGradient + * + * Sets the single item highlight \c gradient of the series. + * See \l{Theme3D::singleHighlightGradient}{Theme3D.singleHighlightGradient} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! + * \qmlproperty Color Abstract3DSeries::multiHighlightColor + * + * Sets the multiple item highlight \c color of the series. + * See \l{Theme3D::multiHighlightColor}{Theme3D.multiHighlightColor} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! + * \qmlproperty ColorGradient Abstract3DSeries::multiHighlightGradient + * + * Sets the multiple item highlight \c gradient of the series. + * See \l{Theme3D::multiHighlightGradient}{Theme3D.multiHighlightGradient} + * documentation for more information. + * + * \sa colorStyle + */ + +/*! * \enum QAbstract3DSeries::SeriesType * * Type of the series. @@ -266,6 +334,158 @@ QString QAbstract3DSeries::userDefinedMesh() const return d_ptr->m_userDefinedMesh; } +/*! + * \property QAbstract3DSeries::colorStyle + * + * Sets the color \a style for the series. + * See Q3DTheme::ColorStyle documentation for more information. + */ +void QAbstract3DSeries::setColorStyle(Q3DTheme::ColorStyle style) +{ + if (d_ptr->m_colorStyle != style) { + d_ptr->setColorStyle(style); + emit colorStyleChanged(style); + } + d_ptr->m_themeTracker.colorStyleOverride = true; +} + +Q3DTheme::ColorStyle QAbstract3DSeries::colorStyle() const +{ + return d_ptr->m_colorStyle; +} + +/*! + * \property QAbstract3DSeries::baseColor + * + * Sets the base \c color of the series. + * See Q3DTheme::baseColor documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setBaseColor(const QColor &color) +{ + if (d_ptr->m_baseColor != color) { + d_ptr->setBaseColor(color); + emit baseColorChanged(color); + } + d_ptr->m_themeTracker.baseColorOverride = true; +} + +QColor QAbstract3DSeries::baseColor() const +{ + return d_ptr->m_baseColor; +} + +/*! + * \property QAbstract3DSeries::baseGradient + * + * Sets the base \c gradient of the series. + * See Q3DTheme::baseGradient documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setBaseGradient(const QLinearGradient &gradient) +{ + if (d_ptr->m_baseGradient != gradient) { + d_ptr->setBaseGradient(gradient); + emit baseGradientChanged(gradient); + } + d_ptr->m_themeTracker.baseGradientOverride = true; +} + +QLinearGradient QAbstract3DSeries::baseGradient() const +{ + return d_ptr->m_baseGradient; +} + +/*! + * \property QAbstract3DSeries::singleHighlightColor + * + * Sets the single item highlight \c color of the series. + * See Q3DTheme::singleHighlightColor documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setSingleHighlightColor(const QColor &color) +{ + if (d_ptr->m_singleHighlightColor != color) { + d_ptr->setSingleHighlightColor(color); + emit singleHighlightColorChanged(color); + } + d_ptr->m_themeTracker.singleHighlightColorOverride = true; +} + +QColor QAbstract3DSeries::singleHighlightColor() const +{ + return d_ptr->m_singleHighlightColor; +} + +/*! + * \property QAbstract3DSeries::singleHighlightGradient + * + * Sets the single item highlight \c gradient of the series. + * See Q3DTheme::singleHighlightGradient documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setSingleHighlightGradient(const QLinearGradient &gradient) +{ + if (d_ptr->m_singleHighlightGradient != gradient) { + d_ptr->setSingleHighlightGradient(gradient); + emit singleHighlightGradientChanged(gradient); + } + d_ptr->m_themeTracker.singleHighlightGradientOverride = true; +} + +QLinearGradient QAbstract3DSeries::singleHighlightGradient() const +{ + return d_ptr->m_singleHighlightGradient; +} + +/*! + * \property QAbstract3DSeries::multiHighlightColor + * + * Sets the multiple item highlight \c color of the series. + * See Q3DTheme::multiHighlightColor documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setMultiHighlightColor(const QColor &color) +{ + if (d_ptr->m_multiHighlightColor != color) { + d_ptr->setMultiHighlightColor(color); + emit multiHighlightColorChanged(color); + } + d_ptr->m_themeTracker.multiHighlightColorOverride = true; +} + +QColor QAbstract3DSeries::multiHighlightColor() const +{ + return d_ptr->m_multiHighlightColor; +} + +/*! + * \property QAbstract3DSeries::multiHighlightGradient + * + * Sets the multiple item highlight \c gradient of the series. + * See Q3DTheme::multiHighlightGradient documentation for more information. + * + * \sa colorStyle + */ +void QAbstract3DSeries::setMultiHighlightGradient(const QLinearGradient &gradient) +{ + if (d_ptr->m_multiHighlightGradient != gradient) { + d_ptr->setMultiHighlightGradient(gradient); + emit multiHighlightGradientChanged(gradient); + } + d_ptr->m_themeTracker.multiHighlightGradientOverride = true; +} + +QLinearGradient QAbstract3DSeries::multiHighlightGradient() const +{ + return d_ptr->m_multiHighlightGradient; +} + // QAbstract3DSeriesPrivate QAbstract3DSeriesPrivate::QAbstract3DSeriesPrivate(QAbstract3DSeries *q, QAbstract3DSeries::SeriesType type) @@ -350,4 +570,95 @@ void QAbstract3DSeriesPrivate::setUserDefinedMesh(const QString &meshFile) m_controller->markSeriesVisualsDirty(); } +void QAbstract3DSeriesPrivate::setColorStyle(Q3DTheme::ColorStyle style) +{ + m_colorStyle = style; + m_changeTracker.colorStyleChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setBaseColor(const QColor &color) +{ + m_baseColor = color; + m_changeTracker.baseColorChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setBaseGradient(const QLinearGradient &gradient) +{ + m_baseGradient = gradient; + m_changeTracker.baseGradientChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setSingleHighlightColor(const QColor &color) +{ + m_singleHighlightColor = color; + m_changeTracker.singleHighlightColorChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setSingleHighlightGradient(const QLinearGradient &gradient) +{ + m_singleHighlightGradient = gradient; + m_changeTracker.singleHighlightGradientChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setMultiHighlightColor(const QColor &color) +{ + m_multiHighlightColor = color; + m_changeTracker.multiHighlightColorChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::setMultiHighlightGradient(const QLinearGradient &gradient) +{ + m_multiHighlightGradient = gradient; + m_changeTracker.multiHighlightGradientChanged = true; + if (m_controller) + m_controller->markSeriesVisualsDirty(); +} + +void QAbstract3DSeriesPrivate::resetToTheme(const Q3DTheme &theme, int seriesIndex, bool force) +{ + // TODO: seriesIndex indicates which color from theme is required + Q_UNUSED(seriesIndex) + + if (force || !m_themeTracker.colorStyleOverride) { + q_ptr->setColorStyle(theme.colorStyle()); + m_themeTracker.colorStyleOverride = false; + } + if (force || !m_themeTracker.baseColorOverride) { + q_ptr->setBaseColor(theme.baseColor()); + m_themeTracker.baseColorOverride = false; + } + if (force || !m_themeTracker.baseGradientOverride) { + q_ptr->setBaseGradient(theme.baseGradient()); + m_themeTracker.baseGradientOverride = false; + } + if (force || !m_themeTracker.singleHighlightColorOverride) { + q_ptr->setSingleHighlightColor(theme.singleHighlightColor()); + m_themeTracker.singleHighlightColorOverride = false; + } + if (force || !m_themeTracker.singleHighlightGradientOverride) { + q_ptr->setSingleHighlightGradient(theme.singleHighlightGradient()); + m_themeTracker.singleHighlightGradientOverride = false; + } + if (force || !m_themeTracker.multiHighlightColorOverride) { + q_ptr->setMultiHighlightColor(theme.multiHighlightColor()); + m_themeTracker.multiHighlightColorOverride = false; + } + if (force || !m_themeTracker.multiHighlightGradientOverride) { + q_ptr->setMultiHighlightGradient(theme.multiHighlightGradient()); + m_themeTracker.multiHighlightGradientOverride = false; + } +} + QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/data/qabstract3dseries.h b/src/datavisualization/data/qabstract3dseries.h index f5dfcf09..ebe73510 100644 --- a/src/datavisualization/data/qabstract3dseries.h +++ b/src/datavisualization/data/qabstract3dseries.h @@ -20,8 +20,10 @@ #define QABSTRACT3DSERIES_H #include <QtDataVisualization/qdatavisualizationenums.h> +#include <QtDataVisualization/q3dtheme.h> #include <QObject> #include <QScopedPointer> +#include <QLinearGradient> QT_DATAVISUALIZATION_BEGIN_NAMESPACE @@ -38,6 +40,13 @@ class QT_DATAVISUALIZATION_EXPORT QAbstract3DSeries : public QObject Q_PROPERTY(Mesh mesh READ mesh WRITE setMesh NOTIFY meshChanged) Q_PROPERTY(bool meshSmooth READ isMeshSmooth WRITE setMeshSmooth NOTIFY meshSmoothChanged) Q_PROPERTY(QString userDefinedMesh READ userDefinedMesh WRITE setUserDefinedMesh NOTIFY userDefinedMeshChanged) + Q_PROPERTY(QtDataVisualization::Q3DTheme::ColorStyle colorStyle READ colorStyle WRITE setColorStyle NOTIFY colorStyleChanged) + Q_PROPERTY(QColor baseColor READ baseColor WRITE setBaseColor NOTIFY baseColorChanged) + Q_PROPERTY(QLinearGradient baseGradient READ baseGradient WRITE setBaseGradient NOTIFY baseGradientChanged) + Q_PROPERTY(QColor singleHighlightColor READ singleHighlightColor WRITE setSingleHighlightColor NOTIFY singleHighlightColorChanged) + Q_PROPERTY(QLinearGradient singleHighlightGradient READ singleHighlightGradient WRITE setSingleHighlightGradient NOTIFY singleHighlightGradientChanged) + Q_PROPERTY(QColor multiHighlightColor READ multiHighlightColor WRITE setMultiHighlightColor NOTIFY multiHighlightColorChanged) + Q_PROPERTY(QLinearGradient multiHighlightGradient READ multiHighlightGradient WRITE setMultiHighlightGradient NOTIFY multiHighlightGradientChanged) public: enum SeriesType { @@ -84,24 +93,38 @@ public: void setUserDefinedMesh(const QString &fileName); QString userDefinedMesh() const; + void setColorStyle(Q3DTheme::ColorStyle style); + Q3DTheme::ColorStyle colorStyle() const; + void setBaseColor(const QColor &color); + QColor baseColor() const; + void setBaseGradient(const QLinearGradient &gradient); + QLinearGradient baseGradient() const; + void setSingleHighlightColor(const QColor &color); + QColor singleHighlightColor() const; + void setSingleHighlightGradient(const QLinearGradient &gradient); + QLinearGradient singleHighlightGradient() const; + void setMultiHighlightColor(const QColor &color); + QColor multiHighlightColor() const; + void setMultiHighlightGradient(const QLinearGradient &gradient); + QLinearGradient multiHighlightGradient() const; + signals: void itemLabelFormatChanged(QString format); void visibilityChanged(bool visible); void meshChanged(Mesh mesh); void meshSmoothChanged(bool enabled); void userDefinedMeshChanged(QString fileName); + void colorStyleChanged(Q3DTheme::ColorStyle style); + void baseColorChanged(QColor color); + void baseGradientChanged(QLinearGradient gradient); + void singleHighlightColorChanged(QColor color); + void singleHighlightGradientChanged(QLinearGradient gradient); + void multiHighlightColorChanged(QColor color); + void multiHighlightGradientChanged(QLinearGradient gradient); protected: QScopedPointer<QAbstract3DSeriesPrivate> d_ptr; -// Q3DTheme::ColorStyle m_colorStyle; -// QColor m_objectColor; -// QLinearGradient m_objectGradient; -// QColor m_singleHighlightColor; -// QLinearGradient m_singleHighlightGradient; -// QColor m_multiHighlightColor; -// QLinearGradient m_multiHighlightGradient; - private: Q_DISABLE_COPY(QAbstract3DSeries) diff --git a/src/datavisualization/data/qabstract3dseries_p.h b/src/datavisualization/data/qabstract3dseries_p.h index d37df562..7b2ea2e6 100644 --- a/src/datavisualization/data/qabstract3dseries_p.h +++ b/src/datavisualization/data/qabstract3dseries_p.h @@ -39,16 +39,51 @@ class QAbstractDataProxy; class Abstract3DController; struct QAbstract3DSeriesChangeBitField { - bool itemLabelFormatChanged : 1; - bool meshChanged : 1; - bool meshSmoothChanged : 1; - bool userDefinedMeshChanged : 1; + bool itemLabelFormatChanged : 1; + bool meshChanged : 1; + bool meshSmoothChanged : 1; + bool userDefinedMeshChanged : 1; + bool colorStyleChanged : 1; + bool baseColorChanged : 1; + bool baseGradientChanged : 1; + bool singleHighlightColorChanged : 1; + bool singleHighlightGradientChanged : 1; + bool multiHighlightColorChanged : 1; + bool multiHighlightGradientChanged : 1; QAbstract3DSeriesChangeBitField() : itemLabelFormatChanged(true), meshChanged(true), meshSmoothChanged(true), - userDefinedMeshChanged(true) + userDefinedMeshChanged(true), + colorStyleChanged(true), + baseColorChanged(true), + baseGradientChanged(true), + singleHighlightColorChanged(true), + singleHighlightGradientChanged(true), + multiHighlightColorChanged(true), + multiHighlightGradientChanged(true) + { + } +}; + +struct QAbstract3DSeriesThemeOverrideBitField { + bool colorStyleOverride : 1; + bool baseColorOverride : 1; + bool baseGradientOverride : 1; + bool singleHighlightColorOverride : 1; + bool singleHighlightGradientOverride : 1; + bool multiHighlightColorOverride : 1; + bool multiHighlightGradientOverride : 1; + + QAbstract3DSeriesThemeOverrideBitField() + : colorStyleOverride(false), + baseColorOverride(false), + baseGradientOverride(false), + singleHighlightColorOverride(false), + singleHighlightGradientOverride(false), + multiHighlightColorOverride(false), + multiHighlightGradientOverride(false) { } }; @@ -71,7 +106,18 @@ public: void setMeshSmooth(bool enable); void setUserDefinedMesh(const QString &meshFile); + void setColorStyle(Q3DTheme::ColorStyle style); + void setBaseColor(const QColor &color); + void setBaseGradient(const QLinearGradient &gradient); + void setSingleHighlightColor(const QColor &color); + void setSingleHighlightGradient(const QLinearGradient &gradient); + void setMultiHighlightColor(const QColor &color); + void setMultiHighlightGradient(const QLinearGradient &gradient); + + void resetToTheme(const Q3DTheme &theme, int seriesIndex, bool force); + QAbstract3DSeriesChangeBitField m_changeTracker; + QAbstract3DSeriesThemeOverrideBitField m_themeTracker; QAbstract3DSeries *q_ptr; QAbstract3DSeries::SeriesType m_type; QString m_itemLabelFormat; @@ -81,6 +127,15 @@ public: QAbstract3DSeries::Mesh m_mesh; bool m_meshSmooth; QString m_userDefinedMesh; + + Q3DTheme::ColorStyle m_colorStyle; + QColor m_baseColor; + QLinearGradient m_baseGradient; + QColor m_singleHighlightColor; + QLinearGradient m_singleHighlightGradient; + QColor m_multiHighlightColor; + QLinearGradient m_multiHighlightGradient; + }; QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/data/qscatterdataproxy.cpp b/src/datavisualization/data/qscatterdataproxy.cpp index 791e5dd6..e0876d64 100644 --- a/src/datavisualization/data/qscatterdataproxy.cpp +++ b/src/datavisualization/data/qscatterdataproxy.cpp @@ -183,6 +183,9 @@ void QScatterDataProxy::insertItems(int index, const QScatterDataArray &items) */ void QScatterDataProxy::removeItems(int index, int removeCount) { + if (index >= dptr()->m_dataArray->size()) + return; + dptr()->removeItems(index, removeCount); emit itemsRemoved(index, removeCount); emit itemCountChanged(itemCount()); |