1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the Qt Data Visualization module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 or (at your option) any later version 20 ** approved by the KDE Free Qt Foundation. The licenses are as published by 21 ** the Free Software Foundation and appearing in the file LICENSE.GPL3 22 ** included in the packaging of this file. Please review the following 23 ** information to ensure the GNU General Public License requirements will 24 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 25 ** 26 ** $QT_END_LICENSE$ 27 ** 28 ****************************************************************************/ 29 30 // 31 // W A R N I N G 32 // ------------- 33 // 34 // This file is not part of the QtDataVisualization API. It exists purely as an 35 // implementation detail. This header file may change from version to 36 // version without notice, or even be removed. 37 // 38 // We mean it. 39 40 #ifndef THEMEMANAGER_P_H 41 #define THEMEMANAGER_P_H 42 43 #include "datavisualizationglobal_p.h" 44 #include "abstract3dcontroller_p.h" 45 #include "q3dtheme.h" 46 47 QT_BEGIN_NAMESPACE_DATAVISUALIZATION 48 49 class ThemeManager : public QObject 50 { 51 Q_OBJECT 52 public: 53 ThemeManager(Abstract3DController *controller); 54 ~ThemeManager(); 55 56 void addTheme(Q3DTheme *theme); 57 void releaseTheme(Q3DTheme *theme); 58 void setActiveTheme(Q3DTheme *theme); 59 Q3DTheme *activeTheme() const; 60 QList<Q3DTheme *> themes() const; 61 62 static void setPredefinedPropertiesToTheme(Q3DTheme *theme, Q3DTheme::Theme type); 63 64 protected: 65 void connectThemeSignals(); 66 static QLinearGradient createGradient(const QColor &color, float colorLevel); 67 static void setBaseColors(Q3DTheme *theme, const QList<QColor> &colors); 68 static void setBackgroundColor(Q3DTheme *theme, const QColor &color); 69 static void setWindowColor(Q3DTheme *theme, const QColor &color); 70 static void setTextColor(Q3DTheme *theme, const QColor &color); 71 static void setTextBackgroundColor(Q3DTheme *theme, const QColor &color); 72 static void setGridLineColor(Q3DTheme *theme, const QColor &color); 73 static void setSingleHighlightColor(Q3DTheme *theme, const QColor &color); 74 static void setMultiHighlightColor(Q3DTheme *theme, const QColor &color); 75 static void setLightColor(Q3DTheme *theme, const QColor &color); 76 static void setBaseGradients(Q3DTheme *theme, const QList<QLinearGradient> &gradients); 77 static void setSingleHighlightGradient(Q3DTheme *theme, const QLinearGradient &gradient); 78 static void setMultiHighlightGradient(Q3DTheme *theme, const QLinearGradient &gradient); 79 static void setLightStrength(Q3DTheme *theme, float strength); 80 static void setAmbientLightStrength(Q3DTheme *theme, float strength); 81 static void setHighlightLightStrength(Q3DTheme *theme, float strength); 82 static void setLabelBorderEnabled(Q3DTheme *theme, bool enabled); 83 static void setFont(Q3DTheme *theme, const QFont &font); 84 static void setBackgroundEnabled(Q3DTheme *theme, bool enabled); 85 static void setGridEnabled(Q3DTheme *theme, bool enabled); 86 static void setLabelBackgroundEnabled(Q3DTheme *theme, bool enabled); 87 static void setColorStyle(Q3DTheme *theme, Q3DTheme::ColorStyle style); 88 89 private: 90 Q3DTheme *m_activeTheme; 91 QList<Q3DTheme *> m_themes; // List of all added themes 92 Abstract3DController *m_controller; 93 }; 94 95 QT_END_NAMESPACE_DATAVISUALIZATION 96 97 #endif 98