source: trunk/src/gui/styles/qs60style_p.h@ 785

Last change on this file since 785 was 769, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 21.3 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtGui module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QS60STYLE_P_H
43#define QS60STYLE_P_H
44
45#include "qs60style.h"
46#include "qcommonstyle_p.h"
47#include <QtCore/qhash.h>
48
49//
50// W A R N I N G
51// -------------
52//
53// This file is not part of the Qt API. It exists purely as an
54// implementation detail. This header file may change from version to
55// version without notice, or even be removed.
56//
57// We mean it.
58//
59
60QT_BEGIN_NAMESPACE
61
62const int MAX_NON_CUSTOM_PIXELMETRICS = 92;
63const int CUSTOMVALUESCOUNT = 5;
64
65const int MAX_PIXELMETRICS = MAX_NON_CUSTOM_PIXELMETRICS + CUSTOMVALUESCOUNT;
66
67typedef struct {
68 unsigned short height;
69 unsigned short width;
70 int major_version;
71 int minor_version;
72 const char* layoutName;
73} layoutHeader;
74
75#ifdef Q_OS_SYMBIAN
76NONSHARABLE_CLASS (QS60StyleEnums)
77#else
78class QS60StyleEnums
79#endif
80: public QObject
81{
82#ifndef Q_WS_S60
83 Q_OBJECT
84 Q_ENUMS(FontCategories)
85 Q_ENUMS(SkinParts)
86 Q_ENUMS(ColorLists)
87#endif // !Q_WS_S60
88
89public:
90
91 // S60 definitions within theme
92 enum ThemeDefinitions {
93 TD_AnimationData,
94 };
95
96 //Defines which values are contained within animation data (retrieved using TD_AnimationData).
97 //Additionally defines the order in which the items are given out in QList<QVariant>.
98 enum AnimationData {
99 AD_Interval = 0,
100 AD_NumberOfFrames,
101 AD_AnimationPlayMode, //currently not used as themes seem to contain invalid data
102 };
103
104 // Animation modes
105 enum AnimationMode {
106 AM_PlayOnce = 0, //animation is played exactly once
107 AM_Looping, //animation is repeated until stopped
108 AM_Bounce //animation is played repeatedly until stopped,
109 //but frames are played in reverse order every second time
110 //(no support yet)
111 };
112
113 // S60 look-and-feel font categories
114 enum FontCategories {
115 FC_Undefined,
116 FC_Primary,
117 FC_Secondary,
118 FC_Title,
119 FC_PrimarySmall,
120 FC_Digital
121 };
122
123 enum SkinParts {
124 SP_QgnGrafBarWaitAnim,
125 SP_QgnGrafBarFrameCenter,
126 SP_QgnGrafBarFrameSideL,
127 SP_QgnGrafBarFrameSideR,
128 SP_QgnGrafBarProgress,
129 SP_QgnGrafOrgBgGrid,
130 SP_QgnGrafScrollArrowDown,
131 SP_QgnGrafScrollArrowLeft,
132 SP_QgnGrafScrollArrowRight,
133 SP_QgnGrafScrollArrowUp,
134 SP_QgnGrafTabActiveL,
135 SP_QgnGrafTabActiveM,
136 SP_QgnGrafTabActiveR,
137 SP_QgnGrafTabPassiveL,
138 SP_QgnGrafTabPassiveM,
139 SP_QgnGrafTabPassiveR,
140 SP_QgnGrafNsliderEndLeft,
141 SP_QgnGrafNsliderEndRight,
142 SP_QgnGrafNsliderMiddle,
143 SP_QgnIndiCheckboxOff,
144 SP_QgnIndiCheckboxOn,
145 SP_QgnIndiHlColSuper, // Available in S60 release 3.2 and later.
146 SP_QgnIndiHlExpSuper, // Available in S60 release 3.2 and later.
147 SP_QgnIndiHlLineBranch, // Available in S60 release 3.2 and later.
148 SP_QgnIndiHlLineEnd, // Available in S60 release 3.2 and later.
149 SP_QgnIndiHlLineStraight, // Available in S60 release 3.2 and later.
150 SP_QgnIndiMarkedAdd,
151 SP_QgnIndiNaviArrowLeft,
152 SP_QgnIndiNaviArrowRight,
153 SP_QgnIndiRadiobuttOff,
154 SP_QgnIndiRadiobuttOn,
155 SP_QgnGrafNsliderMarker,
156 SP_QgnGrafNsliderMarkerSelected,
157 SP_QgnIndiSubMenu,
158 SP_QgnNoteErased,
159 SP_QgnNoteError,
160 SP_QgnNoteInfo,
161 SP_QgnNoteOk,
162 SP_QgnNoteQuery,
163 SP_QgnNoteWarning,
164 SP_QgnPropFileSmall,
165 SP_QgnPropFolderCurrent,
166 SP_QgnPropFolderSmall,
167 SP_QgnPropFolderSmallNew,
168 SP_QgnPropPhoneMemcLarge,
169 SP_QsnCpScrollHandleBottomPressed, //ScrollBar handle, pressed state
170 SP_QsnCpScrollHandleMiddlePressed,
171 SP_QsnCpScrollHandleTopPressed,
172 SP_QsnBgScreen,
173 SP_QsnCpScrollBgBottom,
174 SP_QsnCpScrollBgMiddle,
175 SP_QsnCpScrollBgTop,
176 SP_QsnCpScrollHandleBottom,
177 SP_QsnCpScrollHandleMiddle,
178 SP_QsnCpScrollHandleTop,
179 SP_QsnFrButtonTbCornerTl, // Button, normal state
180 SP_QsnFrButtonTbCornerTr,
181 SP_QsnFrButtonTbCornerBl,
182 SP_QsnFrButtonTbCornerBr,
183 SP_QsnFrButtonTbSideT,
184 SP_QsnFrButtonTbSideB,
185 SP_QsnFrButtonTbSideL,
186 SP_QsnFrButtonTbSideR,
187 SP_QsnFrButtonTbCenter,
188 SP_QsnFrButtonTbCornerTlPressed, // Button, pressed state
189 SP_QsnFrButtonTbCornerTrPressed,
190 SP_QsnFrButtonTbCornerBlPressed,
191 SP_QsnFrButtonTbCornerBrPressed,
192 SP_QsnFrButtonTbSideTPressed,
193 SP_QsnFrButtonTbSideBPressed,
194 SP_QsnFrButtonTbSideLPressed,
195 SP_QsnFrButtonTbSideRPressed,
196 SP_QsnFrButtonTbCenterPressed,
197 SP_QsnFrCaleCornerTl, // calendar grid item
198 SP_QsnFrCaleCornerTr,
199 SP_QsnFrCaleCornerBl,
200 SP_QsnFrCaleCornerBr,
201 SP_QsnFrCaleGSideT,
202 SP_QsnFrCaleGSideB,
203 SP_QsnFrCaleGSideL,
204 SP_QsnFrCaleGSideR,
205 SP_QsnFrCaleCenter,
206 SP_QsnFrCaleHeadingCornerTl, // calendar grid header
207 SP_QsnFrCaleHeadingCornerTr,
208 SP_QsnFrCaleHeadingCornerBl,
209 SP_QsnFrCaleHeadingCornerBr,
210 SP_QsnFrCaleHeadingSideT,
211 SP_QsnFrCaleHeadingSideB,
212 SP_QsnFrCaleHeadingSideL,
213 SP_QsnFrCaleHeadingSideR,
214 SP_QsnFrCaleHeadingCenter,
215 SP_QsnFrInputCornerTl, // Text input field
216 SP_QsnFrInputCornerTr,
217 SP_QsnFrInputCornerBl,
218 SP_QsnFrInputCornerBr,
219 SP_QsnFrInputSideT,
220 SP_QsnFrInputSideB,
221 SP_QsnFrInputSideL,
222 SP_QsnFrInputSideR,
223 SP_QsnFrInputCenter,
224 SP_QsnFrListCornerTl, // List background
225 SP_QsnFrListCornerTr,
226 SP_QsnFrListCornerBl,
227 SP_QsnFrListCornerBr,
228 SP_QsnFrListSideT,
229 SP_QsnFrListSideB,
230 SP_QsnFrListSideL,
231 SP_QsnFrListSideR,
232 SP_QsnFrListCenter,
233 SP_QsnFrPopupCornerTl, // Option menu background
234 SP_QsnFrPopupCornerTr,
235 SP_QsnFrPopupCornerBl,
236 SP_QsnFrPopupCornerBr,
237 SP_QsnFrPopupSideT,
238 SP_QsnFrPopupSideB,
239 SP_QsnFrPopupSideL,
240 SP_QsnFrPopupSideR,
241 SP_QsnFrPopupCenter,
242 SP_QsnFrPopupPreviewCornerTl, // tool tip background
243 SP_QsnFrPopupPreviewCornerTr,
244 SP_QsnFrPopupPreviewCornerBl,
245 SP_QsnFrPopupPreviewCornerBr,
246 SP_QsnFrPopupPreviewSideT,
247 SP_QsnFrPopupPreviewSideB,
248 SP_QsnFrPopupPreviewSideL,
249 SP_QsnFrPopupPreviewSideR,
250 SP_QsnFrPopupPreviewCenter,
251 SP_QsnFrSetOptCornerTl, // Settings list
252 SP_QsnFrSetOptCornerTr,
253 SP_QsnFrSetOptCornerBl,
254 SP_QsnFrSetOptCornerBr,
255 SP_QsnFrSetOptSideT,
256 SP_QsnFrSetOptSideB,
257 SP_QsnFrSetOptSideL,
258 SP_QsnFrSetOptSideR,
259 SP_QsnFrSetOptCenter,
260 SP_QsnFrPopupSubCornerTl, // Toolbar background
261 SP_QsnFrPopupSubCornerTr,
262 SP_QsnFrPopupSubCornerBl,
263 SP_QsnFrPopupSubCornerBr,
264 SP_QsnFrPopupSubSideT,
265 SP_QsnFrPopupSubSideB,
266 SP_QsnFrPopupSubSideL,
267 SP_QsnFrPopupSubSideR,
268 SP_QsnFrPopupSubCenter,
269 SP_QsnFrSctrlButtonCornerTl, // Toolbar button
270 SP_QsnFrSctrlButtonCornerTr,
271 SP_QsnFrSctrlButtonCornerBl,
272 SP_QsnFrSctrlButtonCornerBr,
273 SP_QsnFrSctrlButtonSideT,
274 SP_QsnFrSctrlButtonSideB,
275 SP_QsnFrSctrlButtonSideL,
276 SP_QsnFrSctrlButtonSideR,
277 SP_QsnFrSctrlButtonCenter,
278 SP_QsnFrSctrlButtonCornerTlPressed, // Toolbar button, pressed
279 SP_QsnFrSctrlButtonCornerTrPressed,
280 SP_QsnFrSctrlButtonCornerBlPressed,
281 SP_QsnFrSctrlButtonCornerBrPressed,
282 SP_QsnFrSctrlButtonSideTPressed,
283 SP_QsnFrSctrlButtonSideBPressed,
284 SP_QsnFrSctrlButtonSideLPressed,
285 SP_QsnFrSctrlButtonSideRPressed,
286 SP_QsnFrSctrlButtonCenterPressed,
287 SP_QsnFrButtonCornerTlInactive, // Inactive button
288 SP_QsnFrButtonCornerTrInactive,
289 SP_QsnFrButtonCornerBlInactive,
290 SP_QsnFrButtonCornerBrInactive,
291 SP_QsnFrButtonSideTInactive,
292 SP_QsnFrButtonSideBInactive,
293 SP_QsnFrButtonSideLInactive,
294 SP_QsnFrButtonSideRInactive,
295 SP_QsnFrButtonCenterInactive,
296 SP_QsnFrGridCornerTlPressed, // Pressed table item
297 SP_QsnFrGridCornerTrPressed,
298 SP_QsnFrGridCornerBlPressed,
299 SP_QsnFrGridCornerBrPressed,
300 SP_QsnFrGridSideTPressed,
301 SP_QsnFrGridSideBPressed,
302 SP_QsnFrGridSideLPressed,
303 SP_QsnFrGridSideRPressed,
304 SP_QsnFrGridCenterPressed,
305 SP_QsnFrListCornerTlPressed, // Pressed list item
306 SP_QsnFrListCornerTrPressed,
307 SP_QsnFrListCornerBlPressed,
308 SP_QsnFrListCornerBrPressed,
309 SP_QsnFrListSideTPressed,
310 SP_QsnFrListSideBPressed,
311 SP_QsnFrListSideLPressed,
312 SP_QsnFrListSideRPressed,
313 SP_QsnFrListPressed,
314 };
315
316 enum ColorLists {
317 CL_QsnHighlightColors,
318 CL_QsnIconColors,
319 CL_QsnLineColors,
320 CL_QsnOtherColors,
321 CL_QsnParentColors,
322 CL_QsnTextColors
323 };
324};
325
326#ifdef Q_WS_S60
327class CAknBitmapAnimation;
328NONSHARABLE_CLASS (AnimationData) : public QObject
329{
330public:
331 AnimationData(const QS60StyleEnums::SkinParts part, int frames, int interval);
332
333 const QS60StyleEnums::SkinParts m_id;
334 int m_frames;
335 int m_interval;
336 QS60StyleEnums::AnimationMode m_mode;
337};
338
339
340NONSHARABLE_CLASS (AnimationDataV2) : public AnimationData
341{
342public:
343 AnimationDataV2(const AnimationData &data);
344 ~AnimationDataV2();
345
346 CAknBitmapAnimation *m_animation;
347 int m_currentFrame;
348 bool m_resourceBased;
349 int m_timerId;
350};
351
352
353class QS60StyleAnimation : public QObject
354{
355public:
356 QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval);
357 ~QS60StyleAnimation();
358
359public:
360 QS60StyleEnums::SkinParts animationId() const {return m_currentData->m_id;}
361 int frameCount() const { return m_currentData->m_frames;}
362 int interval() const {return m_currentData->m_interval;}
363 QS60StyleEnums::AnimationMode playMode() const {return m_currentData->m_mode;}
364 CAknBitmapAnimation* animationObject() const {return m_currentData->m_animation;}
365 bool isResourceBased() const {return m_currentData->m_resourceBased;}
366 int timerId() const {return m_currentData->m_timerId;}
367 int currentFrame() const {return m_currentData->m_currentFrame;}
368
369 void setFrameCount(int frameCount) {m_currentData->m_frames = frameCount;}
370 void setInterval(int interval) {m_currentData->m_interval = interval;}
371 void setAnimationObject(CAknBitmapAnimation* animation);
372 void setResourceBased(bool resourceBased) {m_currentData->m_resourceBased = resourceBased;}
373 void setTimerId(int timerId) {m_currentData->m_timerId = timerId;}
374 void setCurrentFrame(int currentFrame) {m_currentData->m_currentFrame = currentFrame;}
375
376 void resetToDefaults();
377
378private: //data members
379 //TODO: consider changing these to non-pointers as the classes are rather small anyway
380 AnimationData *m_defaultData;
381 AnimationDataV2 *m_currentData;
382};
383
384#endif //Q_WS_S60
385
386
387class QFocusFrame;
388class QProgressBar;
389class QS60StyleAnimation;
390
391// Private class
392#ifdef Q_OS_SYMBIAN
393NONSHARABLE_CLASS (QS60StylePrivate)
394#else
395class QS60StylePrivate
396#endif
397: public QCommonStylePrivate
398{
399 Q_DECLARE_PUBLIC(QS60Style)
400
401public:
402 QS60StylePrivate();
403 ~QS60StylePrivate();
404
405 enum SkinElements {
406 SE_ButtonNormal,
407 SE_ButtonPressed,
408 SE_FrameLineEdit,
409 SE_ProgressBarGrooveHorizontal,
410 SE_ProgressBarIndicatorHorizontal,
411 SE_ProgressBarGrooveVertical,
412 SE_ProgressBarIndicatorVertical,
413 SE_ScrollBarGrooveHorizontal,
414 SE_ScrollBarGrooveVertical,
415 SE_ScrollBarHandleHorizontal,
416 SE_ScrollBarHandleVertical,
417 SE_SliderHandleHorizontal,
418 SE_SliderHandleVertical,
419 SE_SliderHandleSelectedHorizontal,
420 SE_SliderHandleSelectedVertical,
421 SE_SliderGrooveVertical,
422 SE_SliderGrooveHorizontal,
423 SE_TabBarTabEastActive,
424 SE_TabBarTabEastInactive,
425 SE_TabBarTabNorthActive,
426 SE_TabBarTabNorthInactive,
427 SE_TabBarTabSouthActive,
428 SE_TabBarTabSouthInactive,
429 SE_TabBarTabWestActive,
430 SE_TabBarTabWestInactive,
431 SE_ListHighlight,
432 SE_PopupBackground,
433 SE_SettingsList,
434 SE_TableItem,
435 SE_TableHeaderItem,
436 SE_ToolTip, //own graphic available on 3.2+ releases,
437 SE_ToolBar,
438 SE_ToolBarButton,
439 SE_ToolBarButtonPressed,
440 SE_PanelBackground,
441 SE_ScrollBarHandlePressedHorizontal,
442 SE_ScrollBarHandlePressedVertical,
443 SE_ButtonInactive,
444 SE_Editor,
445 SE_DropArea,
446 SE_TableItemPressed,
447 SE_ListItemPressed,
448 };
449
450 enum SkinFrameElements {
451 SF_ButtonNormal,
452 SF_ButtonPressed,
453 SF_FrameLineEdit,
454 SF_ListHighlight,
455 SF_PopupBackground,
456 SF_SettingsList,
457 SF_TableItem,
458 SF_TableHeaderItem,
459 SF_ToolTip,
460 SF_ToolBar,
461 SF_ToolBarButton,
462 SF_ToolBarButtonPressed,
463 SF_PanelBackground,
464 SF_ButtonInactive,
465 SF_TableItemPressed,
466 SF_ListItemPressed,
467 };
468
469 enum SkinElementFlag {
470 SF_PointNorth = 0x0001, // North = the default
471 SF_PointEast = 0x0002,
472 SF_PointSouth = 0x0004,
473 SF_PointWest = 0x0008,
474
475 SF_StateEnabled = 0x0010, // Enabled = the default
476 SF_StateDisabled = 0x0020,
477 SF_ColorSkinned = 0x0040, // pixmap is colored with foreground pen color
478 SF_Animation = 0x0080,
479 SF_Mirrored_X_Axis = 0x0100,
480 SF_Mirrored_Y_Axis = 0x0200
481 };
482
483 enum CacheClearReason {
484 CC_UndefinedChange = 0,
485 CC_LayoutChange,
486 CC_ThemeChange
487 };
488
489 Q_DECLARE_FLAGS(SkinElementFlags, SkinElementFlag)
490
491 // draws skin element
492 static void drawSkinElement(SkinElements element, QPainter *painter,
493 const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
494 // draws a specific skin part
495 static void drawSkinPart(QS60StyleEnums::SkinParts part, QPainter *painter,
496 const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
497 // gets pixel metrics value
498 static short pixelMetric(int metric);
499 // gets color. 'index' is NOT 0-based.
500 // It corresponds to the enum key 1-based numbers of TAknsQsnXYZColorsIndex, not the values.
501 static QColor s60Color(QS60StyleEnums::ColorLists list,
502 int index, const QStyleOption *option);
503 // gets state specific color
504 static QColor stateColor(const QColor &color, const QStyleOption *option);
505 // gets lighter color than base color
506 static QColor lighterColor(const QColor &baseColor);
507 //deduces if the given widget should have separately themeable background
508 static bool drawsOwnThemeBackground(const QWidget *widget);
509
510 QFont s60Font(QS60StyleEnums::FontCategories fontCategory,
511 int pointSize = -1, bool resolveFontSize = true) const;
512 // clears all style caches (fonts, colors, pixmaps)
513 void clearCaches(CacheClearReason reason = CC_UndefinedChange);
514
515 // themed main background oprations
516 void setBackgroundTexture(QApplication *application) const;
517 static void deleteBackground();
518
519 static bool isTouchSupported();
520 static bool isToolBarBackground();
521 static bool hasSliderGrooveGraphic();
522 static bool isSingleClickUi();
523 static bool isWidgetPressed(const QWidget *widget);
524
525 // calculates average color based on button skin graphics (minus borders).
526 QColor colorFromFrameGraphics(SkinFrameElements frame) const;
527
528 //set theme palette for application
529 void setThemePalette(QApplication *application) const;
530 //access to theme palette
531 static QPalette* themePalette();
532
533 static const layoutHeader m_layoutHeaders[];
534 static const short data[][MAX_PIXELMETRICS];
535
536 void setCurrentLayout(int layoutIndex);
537 void setActiveLayout();
538 // Pointer
539 static short const *m_pmPointer;
540 // number of layouts supported by the style
541 static const int m_numberOfLayouts;
542
543 mutable QHash<QPair<QS60StyleEnums::FontCategories , int>, QFont> m_mappedFontsCache;
544 mutable QHash<SkinFrameElements, QColor> m_colorCache;
545
546 // Has one entry per SkinFrameElements
547 static const struct frameElementCenter {
548 SkinElements element;
549 QS60StyleEnums::SkinParts center;
550 } m_frameElementsData[];
551
552 static QPixmap frame(SkinFrameElements frame, const QSize &size,
553 SkinElementFlags flags = KDefaultSkinElementFlags);
554 static QPixmap backgroundTexture();
555
556#ifdef Q_WS_S60
557 void handleDynamicLayoutVariantSwitch();
558 void handleSkinChange();
559#endif // Q_WS_S60
560
561 static QSize naviPaneSize();
562
563 //Checks that the current brush is transparent or has BrushStyle NoBrush,
564 //so that theme graphic background can be drawn.
565 static bool canDrawThemeBackground(const QBrush &backgroundBrush, const QWidget *widget);
566
567 static int currentAnimationFrame(QS60StyleEnums::SkinParts part);
568#ifdef Q_WS_S60
569
570 //No support for animations on emulated style
571 void startAnimation(QS60StyleEnums::SkinParts animation);
572 void stopAnimation(QS60StyleEnums::SkinParts animation);
573 static QS60StyleAnimation* animationDefinition(QS60StyleEnums::SkinParts part);
574
575#endif
576
577private:
578 static void drawPart(QS60StyleEnums::SkinParts part, QPainter *painter,
579 const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
580 static void drawRow(QS60StyleEnums::SkinParts start, QS60StyleEnums::SkinParts middle,
581 QS60StyleEnums::SkinParts end, Qt::Orientation orientation, QPainter *painter,
582 const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
583 static void drawFrame(SkinFrameElements frame, QPainter *painter,
584 const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
585
586 static QPixmap cachedPart(QS60StyleEnums::SkinParts part, const QSize &size,
587 QPainter *painter, SkinElementFlags flags = KDefaultSkinElementFlags);
588 static QPixmap cachedFrame(SkinFrameElements frame, const QSize &size,
589 SkinElementFlags flags = KDefaultSkinElementFlags);
590
591 static void refreshUI();
592
593 // set S60 font for widget
594 void setFont(QWidget *widget) const;
595 void setThemePalette(QWidget *widget) const;
596 void setThemePalette(QPalette *palette) const;
597 void setThemePaletteHash(QPalette *palette) const;
598 static void storeThemePalette(QPalette *palette);
599 static void deleteThemePalette();
600
601 static QSize partSize(QS60StyleEnums::SkinParts part,
602 SkinElementFlags flags = KDefaultSkinElementFlags);
603 static QPixmap part(QS60StyleEnums::SkinParts part, const QSize &size,
604 QPainter *painter, SkinElementFlags flags = KDefaultSkinElementFlags);
605
606 static QFont s60Font_specific(QS60StyleEnums::FontCategories fontCategory,
607 int pointSize, bool resolveFontSize);
608
609 static QSize screenSize();
610
611 // Contains background texture.
612 static QPixmap *m_background;
613 const static SkinElementFlags KDefaultSkinElementFlags;
614 // defined theme palette
615 static QPalette *m_themePalette;
616 QPalette m_originalPalette;
617
618 QPointer<QFocusFrame> m_focusFrame;
619 static qint64 m_webPaletteKey;
620
621 static QPointer<QWidget> m_pressedWidget;
622
623#ifdef Q_WS_S60
624 //list of progress bars having animation running
625 QList<QProgressBar *> m_bars;
626#endif
627
628};
629
630QT_END_NAMESPACE
631
632#endif // QS60STYLE_P_H
Note: See TracBrowser for help on using the repository browser.