1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the examples of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 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 http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef THEME_H 43 #define THEME_H 44 45 #include <QPen> 46 #include <QPainter> 47 48 #include "gvbwidget.h" 49 #include "listitem.h" 50 51 class Theme : public QObject 52 { 53 Q_OBJECT 54 55 public: 56 enum Themes 57 { 58 Blue = 0, 59 Lime = 1, 60 }; 61 62 enum Fonts 63 { 64 ContactName, 65 ContactNumber, 66 ContactEmail, 67 TitleBar, 68 StatusBar, 69 MenuItem, 70 }; 71 72 virtual ~Theme(); 73 74 static Theme* p(); 75 76 void setTheme(const QString theme); 77 void setTheme(const Themes theme); 78 theme()79 Themes theme() const { return m_currentTheme; } currentThemeName()80 QString currentThemeName() { return m_availableThemes.at(m_currentTheme); } themes()81 QStringList themes() const { return m_availableThemes; } themesCount()82 int themesCount() const { return m_availableThemes.count(); } 83 84 QPixmap pixmap(const QString filename = "", QSize size = QSize(0,0)); font(Fonts type)85 QFont font(Fonts type) const { return m_fonts[type]; } pixmapPath()86 QString pixmapPath() const { return m_pixmapPath; } 87 listItemBackgroundBrushEven()88 QBrush listItemBackgroundBrushEven() const { return m_listItemBackgroundBrushEven; } listItemBackgroundBrushOdd()89 QBrush listItemBackgroundBrushOdd() const { return m_listItemBackgroundBrushOdd; } listItemBackgroundOpacityEven()90 qreal listItemBackgroundOpacityEven() const { return m_listItemBackgroundOpacityEven; } listItemBackgroundOpacityOdd()91 qreal listItemBackgroundOpacityOdd() const { return m_listItemBackgroundOpacityOdd; } 92 listItemBorderPen()93 QPen listItemBorderPen() const { return m_listItemBorderPen; } listItemRounding()94 QSize listItemRounding() const { return m_listItemRounding; } 95 96 #if (QT_VERSION >= 0x040600) isIconOpacityEffectEnabled(const ListItem::IconItemPos iconPos)97 bool isIconOpacityEffectEnabled(const ListItem::IconItemPos iconPos) const { return m_iconOpacityEffectEnabled[iconPos]; } 98 #endif iconRotation(const ListItem::IconItemPos iconPos)99 qreal iconRotation(const ListItem::IconItemPos iconPos) const { return m_iconRotation[iconPos]; } isIconSmoothTransformationEnabled(const ListItem::IconItemPos iconPos)100 bool isIconSmoothTransformationEnabled(const ListItem::IconItemPos iconPos) const { return m_iconSmoothTransformation[iconPos]; } 101 102 signals: 103 void themeChanged(); 104 105 private: 106 Theme(QObject *parent = 0); 107 108 void setBlueTheme(); 109 void setLimeTheme(); 110 111 private: 112 Q_DISABLE_COPY(Theme) 113 114 Themes m_currentTheme; 115 QStringList m_availableThemes; 116 QHash<Fonts, QFont> m_fonts; 117 QString m_pixmapPath; 118 119 QBrush m_listItemBackgroundBrushEven; 120 qreal m_listItemBackgroundOpacityEven; 121 QBrush m_listItemBackgroundBrushOdd; 122 qreal m_listItemBackgroundOpacityOdd; 123 124 QPen m_listItemBorderPen; 125 QSize m_listItemRounding; 126 127 #if (QT_VERSION >= 0x040600) 128 QHash<ListItem::IconItemPos, bool> m_iconOpacityEffectEnabled; 129 #endif 130 QHash<ListItem::IconItemPos, qreal> m_iconRotation; 131 QHash<ListItem::IconItemPos, bool> m_iconSmoothTransformation; 132 }; 133 134 #endif // THEME_H 135