summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/theme/thememanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/theme/thememanager.cpp')
-rw-r--r--src/datavisualization/theme/thememanager.cpp307
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