Merge remote-tracking branch 'gerrit/master' into newdocs
[profile/ivi/qtbase.git] / src / gui / kernel / qplatformtheme.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtGui module 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 Digia.  For licensing terms and
14 ** conditions see http://qt.digia.com/licensing.  For further information
15 ** use the contact form at http://qt.digia.com/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 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file.  Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights.  These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file.  Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QPLATFORMTHEME_H
43 #define QPLATFORMTHEME_H
44
45 //
46 //  W A R N I N G
47 //  -------------
48 //
49 // This file is part of the QPA API and is not meant to be used
50 // in applications. Usage of this API may make your code
51 // source and binary incompatible with future versions of Qt.
52 //
53
54 #include <QtCore/QtGlobal>
55
56 QT_BEGIN_HEADER
57
58 QT_BEGIN_NAMESPACE
59
60 class QMenu;
61 class QMenuBar;
62 class QPlatformMenuItem;
63 class QPlatformMenu;
64 class QPlatformMenuBar;
65 class QPlatformDialogHelper;
66 class QPlatformSystemTrayIcon;
67 class QVariant;
68 class QPalette;
69 class QFont;
70 class QPixmap;
71 class QSizeF;
72 class QFileInfo;
73
74 class Q_GUI_EXPORT QPlatformTheme
75 {
76 public:
77     enum ThemeHint {
78         CursorFlashTime,
79         KeyboardInputInterval,
80         MouseDoubleClickInterval,
81         StartDragDistance,
82         StartDragTime,
83         KeyboardAutoRepeatRate,
84         PasswordMaskDelay,
85         StartDragVelocity,
86         TextCursorWidth,
87         DropShadow,
88         MaximumScrollBarDragDistance,
89         ToolButtonStyle,
90         ToolBarIconSize,
91         ItemViewActivateItemOnSingleClick,
92         SystemIconThemeName,
93         SystemIconFallbackThemeName,
94         IconThemeSearchPaths,
95         StyleNames,
96         WindowAutoPlacement,
97         DialogButtonBoxLayout,
98         DialogButtonBoxButtonsHaveIcons,
99         UseFullScreenForPopupMenu,
100         KeyboardScheme,
101         UiEffects,
102         SpellCheckUnderlineStyle,
103         TabAllWidgets,
104         IconPixmapSizes
105     };
106
107     enum DialogType {
108         FileDialog,
109         ColorDialog,
110         FontDialog
111     };
112
113     enum Palette {
114         SystemPalette,
115         ToolTipPalette,
116         ToolButtonPalette,
117         ButtonPalette,
118         HeaderPalette,
119         ComboBoxPalette,
120         ItemViewPalette,
121         MessageBoxLabelPelette,
122         TabBarPalette,
123         LabelPalette,
124         GroupBoxPalette,
125         MenuPalette,
126         MenuBarPalette,
127         TextEditPalette,
128         TextLineEditPalette,
129         NPalettes
130     };
131
132     enum Font {
133         SystemFont,
134         MenuFont,
135         MenuBarFont,
136         MenuItemFont,
137         MessageBoxFont,
138         LabelFont,
139         TipLabelFont,
140         StatusBarFont,
141         TitleBarFont,
142         MdiSubWindowTitleFont,
143         DockWidgetTitleFont,
144         PushButtonFont,
145         ToolButtonFont,
146         ItemViewFont,
147         ListViewFont,
148         HeaderViewFont,
149         ListBoxFont,
150         ComboMenuItemFont,
151         ComboLineEditFont,
152         SmallFont,
153         MiniFont,
154         NFonts
155     };
156
157     enum StandardPixmap {  // Keep in sync with QStyle::StandardPixmap
158         TitleBarMenuButton,
159         TitleBarMinButton,
160         TitleBarMaxButton,
161         TitleBarCloseButton,
162         TitleBarNormalButton,
163         TitleBarShadeButton,
164         TitleBarUnshadeButton,
165         TitleBarContextHelpButton,
166         DockWidgetCloseButton,
167         MessageBoxInformation,
168         MessageBoxWarning,
169         MessageBoxCritical,
170         MessageBoxQuestion,
171         DesktopIcon,
172         TrashIcon,
173         ComputerIcon,
174         DriveFDIcon,
175         DriveHDIcon,
176         DriveCDIcon,
177         DriveDVDIcon,
178         DriveNetIcon,
179         DirOpenIcon,
180         DirClosedIcon,
181         DirLinkIcon,
182         DirLinkOpenIcon,
183         FileIcon,
184         FileLinkIcon,
185         ToolBarHorizontalExtensionButton,
186         ToolBarVerticalExtensionButton,
187         FileDialogStart,
188         FileDialogEnd,
189         FileDialogToParent,
190         FileDialogNewFolder,
191         FileDialogDetailedView,
192         FileDialogInfoView,
193         FileDialogContentsView,
194         FileDialogListView,
195         FileDialogBack,
196         DirIcon,
197         DialogOkButton,
198         DialogCancelButton,
199         DialogHelpButton,
200         DialogOpenButton,
201         DialogSaveButton,
202         DialogCloseButton,
203         DialogApplyButton,
204         DialogResetButton,
205         DialogDiscardButton,
206         DialogYesButton,
207         DialogNoButton,
208         ArrowUp,
209         ArrowDown,
210         ArrowLeft,
211         ArrowRight,
212         ArrowBack,
213         ArrowForward,
214         DirHomeIcon,
215         CommandLink,
216         VistaShield,
217         BrowserReload,
218         BrowserStop,
219         MediaPlay,
220         MediaStop,
221         MediaPause,
222         MediaSkipForward,
223         MediaSkipBackward,
224         MediaSeekForward,
225         MediaSeekBackward,
226         MediaVolume,
227         MediaVolumeMuted,
228         // do not add any values below/greater than this
229         CustomBase = 0xf0000000
230     };
231
232     enum KeyboardSchemes
233     {
234         WindowsKeyboardScheme,
235         MacKeyboardScheme,
236         X11KeyboardScheme,
237         KdeKeyboardScheme,
238         GnomeKeyboardScheme,
239         CdeKeyboardScheme
240     };
241
242     enum UiEffect
243     {
244         GeneralUiEffect = 0x1,
245         AnimateMenuUiEffect = 0x2,
246         FadeMenuUiEffect = 0x4,
247         AnimateComboUiEffect = 0x8,
248         AnimateTooltipUiEffect = 0x10,
249         FadeTooltipUiEffect = 0x20,
250         AnimateToolBoxUiEffect = 0x40
251     };
252
253     virtual ~QPlatformTheme();
254
255     virtual QPlatformMenuItem* createPlatformMenuItem() const;
256     virtual QPlatformMenu* createPlatformMenu() const;
257     virtual QPlatformMenuBar* createPlatformMenuBar() const;
258
259     virtual bool usePlatformNativeDialog(DialogType type) const;
260     virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
261
262 #ifndef QT_NO_SYSTEMTRAYICON
263     virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const;
264 #endif
265
266     virtual const QPalette *palette(Palette type = SystemPalette) const;
267
268     virtual const QFont *font(Font type = SystemFont) const;
269
270     virtual QVariant themeHint(ThemeHint hint) const;
271
272     virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const;
273     virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size) const;
274
275     static QVariant defaultThemeHint(ThemeHint hint);
276 };
277
278 QT_END_NAMESPACE
279
280 QT_END_HEADER
281
282 #endif // QPLATFORMTHEME_H