summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-09 10:49:49 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-12-10 09:01:45 +0200
commit3573055abe42ff283d011d8550bc8495156338a1 (patch)
treebb45d4f7e32a0c63329d9f52639081162b34e17e /src/datavisualization/data
parent22557b312570cbefde584466a28f2b9bfcc570ba (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.cpp311
-rw-r--r--src/datavisualization/data/qabstract3dseries.h39
-rw-r--r--src/datavisualization/data/qabstract3dseries_p.h65
-rw-r--r--src/datavisualization/data/qscatterdataproxy.cpp3
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());