diff options
Diffstat (limited to 'src/datavisualizationqml2/declarativetheme.cpp')
-rw-r--r-- | src/datavisualizationqml2/declarativetheme.cpp | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/datavisualizationqml2/declarativetheme.cpp b/src/datavisualizationqml2/declarativetheme.cpp index 6c804397..5aec2408 100644 --- a/src/datavisualizationqml2/declarativetheme.cpp +++ b/src/datavisualizationqml2/declarativetheme.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc +** Copyright (C) 2014 Digia Plc ** All rights reserved. ** For any questions to Digia, please use contact form at http://qt.digia.com ** @@ -18,7 +18,7 @@ #include "declarativetheme_p.h" -QT_DATAVISUALIZATION_BEGIN_NAMESPACE +QT_BEGIN_NAMESPACE_DATAVISUALIZATION DeclarativeTheme3D::DeclarativeTheme3D(QObject *parent) : Q3DTheme(parent), @@ -29,6 +29,7 @@ DeclarativeTheme3D::DeclarativeTheme3D(QObject *parent) m_dummyGradients(false), m_dummyColors(false) { + connect(this, &Q3DTheme::typeChanged, this, &DeclarativeTheme3D::handleTypeChange); } DeclarativeTheme3D::~DeclarativeTheme3D() @@ -48,6 +49,23 @@ void DeclarativeTheme3D::appendSeriesChildren(QQmlListProperty<QObject> *list, Q // Nothing to do, seriesChildren is there only to enable scoping gradient items in Theme3D item. } +void DeclarativeTheme3D::handleTypeChange(Theme themeType) +{ + Q_UNUSED(themeType) + + // Theme changed, disconnect base color/gradient connections + if (!m_colors.isEmpty()) { + foreach (DeclarativeColor *item, m_colors) + disconnect(item, 0, this, 0); + m_colors.clear(); + } + if (!m_gradients.isEmpty()) { + foreach (ColorGradient *item, m_gradients) + disconnect(item, 0, this, 0); + m_gradients.clear(); + } +} + void DeclarativeTheme3D::handleBaseColorUpdate() { int colorCount = m_colors.size(); @@ -150,6 +168,19 @@ ColorGradient *DeclarativeTheme3D::multiHighlightGradient() const return m_multiHLGradient; } +void DeclarativeTheme3D::classBegin() +{ + // Turn off predefined type forcing for the duration of initial class construction + // so that predefined type customization can be done. + d_ptr->setForcePredefinedType(false); +} + +void DeclarativeTheme3D::componentComplete() +{ + d_ptr->setForcePredefinedType(true); +} + + void DeclarativeTheme3D::setThemeGradient(ColorGradient *gradient, GradientType type) { QLinearGradient newGradient = convertGradient(gradient); @@ -217,7 +248,7 @@ void DeclarativeTheme3D::addColor(DeclarativeColor *color) QList<DeclarativeColor *> DeclarativeTheme3D::colorList() { if (m_colors.isEmpty()) { - // Create dummy ThemeColors from theme's gradients + // Create dummy ThemeColors from theme's colors m_dummyColors = true; QList<QColor> list = Q3DTheme::baseColors(); foreach (QColor item, list) { @@ -359,4 +390,4 @@ void DeclarativeTheme3D::clearBaseGradientsFunc(QQmlListProperty<ColorGradient> reinterpret_cast<DeclarativeTheme3D *>(list->data)->clearGradients(); } -QT_DATAVISUALIZATION_END_NAMESPACE +QT_END_NAMESPACE_DATAVISUALIZATION |