diff options
Diffstat (limited to 'src/datavisualization/theme/thememanager.cpp')
-rw-r--r-- | src/datavisualization/theme/thememanager.cpp | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp new file mode 100644 index 00000000..57682958 --- /dev/null +++ b/src/datavisualization/theme/thememanager.cpp @@ -0,0 +1,307 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "thememanager_p.h" + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +ThemeManager::ThemeManager(Abstract3DController *controller) + : m_theme(0), + m_controller(controller) +{ +} + +ThemeManager::~ThemeManager() +{ +} + +void ThemeManager::setTheme(Q3DTheme *theme) +{ + if (!theme) + return; + + if (m_theme.data() != theme) { + // Disconnect old theme signal connections + if (m_theme) { + disconnect(m_theme.data(), 0, m_controller, 0); + disconnect(m_theme.data(), 0, this, 0); + } + + m_theme.reset(theme); + + QDataVis::Theme type = m_theme->type(); + + if (type != QDataVis::ThemeUserDefined) + useTheme(type); + + // Connect signals from new one + connectThemeSignals(); + } +} + +Q3DTheme *ThemeManager::theme() const +{ + return m_theme.data(); +} + +void ThemeManager::connectThemeSignals() +{ + // TODO: Implement receiving end for the commented ones (QTRD-2538) + connect(m_theme.data(), &Q3DTheme::baseColorChanged, + m_controller, &Abstract3DController::setObjectColor); +// connect(m_theme.data(), &Q3DTheme::backgroundColorChanged, +// m_controller, &Abstract3DController::setBackgroundColorColor); +// connect(m_theme.data(), &Q3DTheme::windowColorChanged, +// m_controller, &Abstract3DController::setWindowColor); +// connect(m_theme.data(), &Q3DTheme::textColorChanged, +// m_controller, &Abstract3DController::setTextColor); +// connect(m_theme.data(), &Q3DTheme::textBackgroundColorChanged, +// m_controller, &Abstract3DController::setTextBackgroundColor); +// connect(m_theme.data(), &Q3DTheme::gridLineColorChanged, +// m_controller, &Abstract3DController::setGridLineColor); + connect(m_theme.data(), &Q3DTheme::singleHighlightColorChanged, + m_controller, &Abstract3DController::setSingleHighlightColor); + connect(m_theme.data(), &Q3DTheme::multiHighlightColorChanged, + m_controller, &Abstract3DController::setMultiHighlightColor); +// connect(m_theme.data(), &Q3DTheme::lightColorChanged, +// m_controller, &Abstract3DController::setLightColor); + connect(m_theme.data(), &Q3DTheme::baseGradientChanged, + m_controller, &Abstract3DController::setObjectGradient); + connect(m_theme.data(), &Q3DTheme::singleHighlightGradientChanged, + m_controller, &Abstract3DController::setSingleHighlightGradient); + connect(m_theme.data(), &Q3DTheme::multiHighlightGradientChanged, + m_controller, &Abstract3DController::setMultiHighlightGradient); +// connect(m_theme.data(), &Q3DTheme::lightStrengthChanged, +// m_controller, &Abstract3DController::setLightStrength); +// connect(m_theme.data(), &Q3DTheme::ambientLightStrengthChanged, +// m_controller, &Abstract3DController::setAmbientLightStrength); +// connect(m_theme.data(), &Q3DTheme::highlightLightStrengthChanged, +// m_controller, &Abstract3DController::setHighlightLightStrength); +// connect(m_theme.data(), &Q3DTheme::labelBorderEnabledChanged, +// m_controller, &Abstract3DController::setLabelBorderEnabled); + connect(m_theme.data(), &Q3DTheme::colorStyleChanged, + m_controller, &Abstract3DController::setColorStyle); + + connect(m_theme.data(), &Q3DTheme::typeChanged, this, &ThemeManager::useTheme); +} + +void ThemeManager::useTheme(QDataVis::Theme type) +{ + switch (type) { + case QDataVis::ThemeQt: { + m_theme->setBaseColor(QColor(QRgb(0x80c342))); + m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); + m_theme->setWindowColor(QColor(QRgb(0xffffff))); + m_theme->setTextColor(QColor(QRgb(0x35322f))); + m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); + m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); + m_theme->setSingleHighlightColor(QColor(QRgb(0x14aaff))); + m_theme->setMultiHighlightColor(QColor(QRgb(0x6400aa))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(true); + m_theme->setColorStyle(QDataVis::ColorStyleUniform); + break; + } + + case QDataVis::ThemePrimaryColors: { + m_theme->setBaseColor(QColor(QRgb(0xffe400))); + m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); + m_theme->setWindowColor(QColor(QRgb(0xffffff))); + m_theme->setTextColor(QColor(QRgb(0x000000))); + m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); + m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); + m_theme->setSingleHighlightColor(QColor(QRgb(0x27beee))); + m_theme->setMultiHighlightColor(QColor(QRgb(0xee1414))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleUniform); + break; + } + + case QDataVis::ThemeDigia: { + m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); + m_theme->setWindowColor(QColor(QRgb(0xffffff))); + m_theme->setTextColor(QColor(QRgb(0x000000))); + m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x80)); + m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); + m_theme->setSingleHighlightColor(QColor(QRgb(0xfa0000))); + m_theme->setMultiHighlightColor(QColor(QRgb(0x555555))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + QColor color; + color.setRed(0xcc * 0.7); + color.setGreen(0xcc * 0.7); + color.setBlue(0xcc * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xcccccc))); + m_theme->setBaseGradient(gradient); + color.setRed(0xfa * 0.7); + color.setGreen(0x00); + color.setBlue(0x00); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xfa0000))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0x55 * 0.7); + color.setGreen(0x55 * 0.7); + color.setBlue(0x55 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x555555))); + m_theme->setMultiHighlightGradient(gradient); + break; + } + + case QDataVis::ThemeStoneMoss: { + m_theme->setBaseColor(QColor(QRgb(0xbeb32b))); + m_theme->setBackgroundColor(QColor(QRgb(0x4d4d4f))); + m_theme->setWindowColor(QColor(QRgb(0x4d4d4f))); + m_theme->setTextColor(QColor(QRgb(0xffffff))); + m_theme->setTextBackgroundColor(QColor(0x4d, 0x4d, 0x4f, 0xcd)); + m_theme->setGridLineColor(QColor(QRgb(0x3e3e40))); + m_theme->setSingleHighlightColor(QColor(QRgb(0xfbf6d6))); + m_theme->setMultiHighlightColor(QColor(QRgb(0x442f20))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(true); + m_theme->setColorStyle(QDataVis::ColorStyleUniform); + break; + } + + case QDataVis::ThemeArmyBlue: { + m_theme->setBackgroundColor(QColor(QRgb(0xd5d6d7))); + m_theme->setWindowColor(QColor(QRgb(0xd5d6d7))); + m_theme->setTextColor(QColor(QRgb(0x000000))); + m_theme->setTextBackgroundColor(QColor(0xd5, 0xd6, 0xd7, 0xcd)); + m_theme->setGridLineColor(QColor(QRgb(0xaeadac))); + m_theme->setSingleHighlightColor(QColor(QRgb(0x2aa2f9))); + m_theme->setMultiHighlightColor(QColor(QRgb(0x103753))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + QColor color; + color.setRed(0x49 * 0.7); + color.setGreen(0x5f * 0.7); + color.setBlue(0x76 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x495f76))); + m_theme->setBaseGradient(gradient); + color.setRed(0x2a * 0.7); + color.setGreen(0xa2 * 0.7); + color.setBlue(0xf9 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x2aa2f9))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0x10 * 0.7); + color.setGreen(0x37 * 0.7); + color.setBlue(0x53 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x103753))); + m_theme->setMultiHighlightGradient(gradient); + break; + } + + case QDataVis::ThemeRetro: { + m_theme->setBackgroundColor(QColor(QRgb(0xe9e2ce))); + m_theme->setWindowColor(QColor(QRgb(0xe9e2ce))); + m_theme->setTextColor(QColor(QRgb(0x000000))); + m_theme->setTextBackgroundColor(QColor(0xe9, 0xe2, 0xce, 0xc0)); + m_theme->setGridLineColor(QColor(QRgb(0xd0c0b0))); + m_theme->setSingleHighlightColor(QColor(QRgb(0x8ea317))); + m_theme->setMultiHighlightColor(QColor(QRgb(0xc25708))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + QColor color; + color.setRed(0x53 * 0.7); + color.setGreen(0x3b * 0.7); + color.setBlue(0x23 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x533b23))); + m_theme->setBaseGradient(gradient); + color.setRed(0x8e * 0.7); + color.setGreen(0xa3 * 0.7); + color.setBlue(0x17 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x8ea317))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0xc2 * 0.7); + color.setGreen(0x57 * 0.7); + color.setBlue(0x08 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xc25708))); + m_theme->setMultiHighlightGradient(gradient); + break; + } + + case QDataVis::ThemeEbony: { + m_theme->setBaseColor(QColor(QRgb(0xffffff))); + m_theme->setBackgroundColor(QColor(QRgb(0x000000))); + m_theme->setWindowColor(QColor(QRgb(0x000000))); + m_theme->setTextColor(QColor(QRgb(0xaeadac))); + m_theme->setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xcd)); + m_theme->setGridLineColor(QColor(QRgb(0x35322f))); + m_theme->setSingleHighlightColor(QColor(QRgb(0xf5dc0d))); + m_theme->setMultiHighlightColor(QColor(QRgb(0xd72222))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleUniform); + break; + } + + case QDataVis::ThemeIsabelle: { + m_theme->setBaseColor(QColor(QRgb(0xf9d900))); + m_theme->setBackgroundColor(QColor(QRgb(0x000000))); + m_theme->setWindowColor(QColor(QRgb(0x000000))); + m_theme->setTextColor(QColor(QRgb(0xaeadac))); + m_theme->setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xc0)); + m_theme->setGridLineColor(QColor(QRgb(0x35322f))); + m_theme->setSingleHighlightColor(QColor(QRgb(0xfff7cc))); + m_theme->setMultiHighlightColor(QColor(QRgb(0xde0a0a))); + m_theme->setLightStrength(5.0f); + m_theme->setAmbientLightStrength(0.5f); + m_theme->setHighlightLightStrength(5.0f); + m_theme->setLabelBorderEnabled(false); + m_theme->setColorStyle(QDataVis::ColorStyleUniform); + break; + } + } +} + +QT_DATAVISUALIZATION_END_NAMESPACE |