summaryrefslogtreecommitdiff
authorsandman <sandman>2002-11-21 19:54:25 (UTC)
committer sandman <sandman>2002-11-21 19:54:25 (UTC)
commit6d302b82aab909da59852d99a31bcc7726ba9f34 (patch) (unidiff)
treee090ba7fcd96afe5fd74e7451f2c59b64f0eb369
parent440f1d4d439c83368a855355cdceda43660137f2 (diff)
downloadopie-6d302b82aab909da59852d99a31bcc7726ba9f34.zip
opie-6d302b82aab909da59852d99a31bcc7726ba9f34.tar.gz
opie-6d302b82aab909da59852d99a31bcc7726ba9f34.tar.bz2
- progress bars are now also themed (same hack/workaround, that is used in
liquid) - some speed optimizations
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/theme/othemestyle.cpp126
-rw-r--r--noncore/styles/theme/othemestyle.h16
2 files changed, 124 insertions, 18 deletions
diff --git a/noncore/styles/theme/othemestyle.cpp b/noncore/styles/theme/othemestyle.cpp
index 8c7a71b..a820efb 100644
--- a/noncore/styles/theme/othemestyle.cpp
+++ b/noncore/styles/theme/othemestyle.cpp
@@ -12,50 +12,112 @@
12 12
13 You should have received a copy of the GNU Library General Public License 13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to 14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 Boston, MA 02111-1307, USA. 16 Boston, MA 02111-1307, USA.
17*/ 17*/
18 18
19#include "othemestyle.h" 19#include "othemestyle.h"
20#include "othemebase.h" 20#include "othemebase.h"
21#include <qpe/qpeapplication.h> 21#include <qpe/qpeapplication.h>
22#include <qbitmap.h> 22#include <qbitmap.h>
23#define INCLUDE_MENUITEM_DEF 23#define INCLUDE_MENUITEM_DEF
24#include <qmenudata.h> 24#include <qmenudata.h>
25#include <qpopupmenu.h> 25#include <qpopupmenu.h>
26#include <qtabbar.h> 26#include <qtabbar.h>
27#include <qglobal.h> 27#include <qglobal.h>
28#include <qprogressbar.h>
28 29
29#include <limits.h> 30#include <limits.h>
30#include <stdio.h> 31#include <stdio.h>
31 32
33typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *,
34 QColorGroup &, bool, bool);
35
36QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl);
37
38
39/* !! HACK !! Beware
40 *
41 * TT forgot to make the QProgressBar widget styleable in Qt 2.x
42 * So the only way to customize the drawing, is to intercept the
43 * paint event - since we have to use protected functions, we need
44 * to derive a "hack" class from QProgressBar and do the painting
45 * in there.
46 *
47 * - sandman
48 */
49
50class HackProgressBar : public QProgressBar {
51public:
52 HackProgressBar ( );
53
54 void paint ( QPaintEvent *event, OThemeStyle *style )
55 {
56 QPainter p( this );
57
58 if ( !contentsRect().contains( event->rect() ) ) {
59 p.save();
60 p.setClipRegion( event->region().intersect(frameRect()) );
61 drawFrame( &p);
62 p.restore();
63 }
64 if ( event->rect().intersects( contentsRect() )) {
65 p.setClipRegion( event->region().intersect( contentsRect() ) );
66
67 int x, y, w, h;
68 contentsRect ( ). rect ( &x, &y, &w, &h );
69
70 int prog = progress ( );
71 int total = totalSteps ( );
72 if ( prog < 0 )
73 prog = 0;
74 if ( total <= 0 )
75 total = 1;
76 int perc = prog * 100 / total;
77
78 style-> drawProgressBar ( &p, x, y, w, h, colorGroup ( ), perc );
79
80 if ( progress ( ) >= 0 && totalSteps ( ) > 0 ) {
81 QString pstr;
82 pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ());
83 p. setPen ( colorGroup().text());//g.highlightedText ( ));
84 p. drawText (x,y,w-1,h-1,AlignCenter,pstr);
85 }
86 }
87 }
88};
89
90
32#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) 91#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
33 92
34OThemeStyle::OThemeStyle( const QString &configFile ) 93OThemeStyle::OThemeStyle( const QString &configFile )
35 : OThemeBase( configFile ) 94 : OThemeBase( configFile )
36{ 95{
37 setScrollBarExtent( getSBExtent(), getSBExtent() ); 96 setScrollBarExtent( getSBExtent(), getSBExtent() );
38 setButtonDefaultIndicatorWidth( 0 ); // We REALLY should support one, see drawPushButton() below! 97 setButtonDefaultIndicatorWidth( 0 ); // We REALLY should support one, see drawPushButton() below!
39} 98}
40 99
41OThemeStyle::~OThemeStyle() 100OThemeStyle::~OThemeStyle()
42{} 101{}
43 102
44void OThemeStyle::polish( QApplication * /*app*/ ) 103void OThemeStyle::polish( QApplication * /*app*/ )
45{} 104{
105 qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &OThemeStyle::drawMenuBarItem);
106}
107
46 108
47void OThemeStyle::polish( QPalette &p ) 109void OThemeStyle::polish( QPalette &p )
48{ 110{
49 oldPalette = p; 111 oldPalette = p;
50 112
51 QColor bg = oldPalette. color ( QPalette::Normal, QColorGroup::Background ); 113 QColor bg = oldPalette. color ( QPalette::Normal, QColorGroup::Background );
52 114
53 if ( bgcolor. isValid ( )) 115 if ( bgcolor. isValid ( ))
54 bg = bgcolor; 116 bg = bgcolor;
55 117
56 if ( isColor ( Background )) 118 if ( isColor ( Background ))
57 bg = colorGroup ( oldPalette. active ( ), Background )-> background ( ); 119 bg = colorGroup ( oldPalette. active ( ), Background )-> background ( );
58 120
59 p = QPalette ( bg, bg ); 121 p = QPalette ( bg, bg );
60 122
61 if ( isPixmap( Background ) ) 123 if ( isPixmap( Background ) )
@@ -66,32 +128,33 @@ void OThemeStyle::polish( QPalette &p )
66 p. setColor ( QColorGroup::ButtonText, fgcolor ); 128 p. setColor ( QColorGroup::ButtonText, fgcolor );
67 } 129 }
68 if ( selfgcolor. isValid ( )) 130 if ( selfgcolor. isValid ( ))
69 p. setColor ( QColorGroup::HighlightedText, selfgcolor ); 131 p. setColor ( QColorGroup::HighlightedText, selfgcolor );
70 if ( selbgcolor. isValid ( )) 132 if ( selbgcolor. isValid ( ))
71 p. setColor ( QColorGroup::Highlight, selbgcolor ); 133 p. setColor ( QColorGroup::Highlight, selbgcolor );
72 if ( winfgcolor. isValid ( )) 134 if ( winfgcolor. isValid ( ))
73 p. setColor ( QColorGroup::Text, winfgcolor ); 135 p. setColor ( QColorGroup::Text, winfgcolor );
74 if ( winbgcolor. isValid ( )) 136 if ( winbgcolor. isValid ( ))
75 p. setColor ( QColorGroup::Base, winbgcolor ); 137 p. setColor ( QColorGroup::Base, winbgcolor );
76 138
77} 139}
78 140
79 141
80void OThemeStyle::unPolish( QApplication *app ) 142void OThemeStyle::unPolish( QApplication *app )
81{ 143{
144 qt_set_draw_menu_bar_impl ( 0 );
82 app->setPalette( oldPalette, true ); 145 app->setPalette( oldPalette, true );
83} 146}
84 147
85void OThemeStyle::polish( QWidget *w ) 148void OThemeStyle::polish( QWidget *w )
86{ 149{
87 if ( !w->isTopLevel() ) { 150 if ( !w->isTopLevel() ) {
88 if ( w->inherits( "QGroupBox" ) 151 if ( w->inherits( "QGroupBox" )
89 || w->inherits( "QTabWidget" ) ) { 152 || w->inherits( "QTabWidget" ) ) {
90 w->setAutoMask( TRUE ); 153 w->setAutoMask( TRUE );
91 return ; 154 return ;
92 } 155 }
93 if ( w->inherits( "QLabel" ) 156 if ( w->inherits( "QLabel" )
94 || w->inherits( "QSlider" ) 157 || w->inherits( "QSlider" )
95 || w->inherits( "QButton" ) 158 || w->inherits( "QButton" )
96 || w->inherits( "QProgressBar" ) 159 || w->inherits( "QProgressBar" )
97 ) { 160 ) {
@@ -99,83 +162,100 @@ void OThemeStyle::polish( QWidget *w )
99 } 162 }
100 } 163 }
101 if ( w->inherits( "QPopupMenu" ) ) { 164 if ( w->inherits( "QPopupMenu" ) ) {
102 popupPalette = w->palette(); 165 popupPalette = w->palette();
103 if ( isColor( MenuItem ) || isColor( MenuItemDown ) ) { 166 if ( isColor( MenuItem ) || isColor( MenuItemDown ) ) {
104 QPalette newPal( w->palette() ); 167 QPalette newPal( w->palette() );
105 w->setPalettePropagation( QWidget::SamePalette ); 168 w->setPalettePropagation( QWidget::SamePalette );
106 if ( isColor( MenuItem ) ) { 169 if ( isColor( MenuItem ) ) {
107 newPal.setNormal( *colorGroup( newPal.normal(), MenuItem ) ); 170 newPal.setNormal( *colorGroup( newPal.normal(), MenuItem ) );
108 newPal.setDisabled( *colorGroup( newPal.normal(), MenuItem ) ); 171 newPal.setDisabled( *colorGroup( newPal.normal(), MenuItem ) );
109 } 172 }
110 if ( isColor( MenuItemDown ) ) 173 if ( isColor( MenuItemDown ) )
111 newPal.setActive( *colorGroup( newPal.active(), MenuItemDown ) ); 174 newPal.setActive( *colorGroup( newPal.active(), MenuItemDown ) );
112 w->setPalette( newPal ); 175 w->setPalette( newPal );
113 } 176 }
114 } 177 }
115 if ( w->inherits( "QCheckBox" ) ) { 178 else if ( w->inherits( "QCheckBox" ) ) {
116 if ( isColor( IndicatorOff ) || isColor( IndicatorOn ) ) { 179 if ( isColor( IndicatorOff ) || isColor( IndicatorOn ) ) {
117 QPalette newPal( w->palette() ); 180 QPalette newPal( w->palette() );
118 w->setPalettePropagation( QWidget::SamePalette ); 181 w->setPalettePropagation( QWidget::SamePalette );
119 if ( isColor( IndicatorOff ) ) { 182 if ( isColor( IndicatorOff ) ) {
120 newPal.setNormal( *colorGroup( newPal.normal(), IndicatorOff ) ); 183 newPal.setNormal( *colorGroup( newPal.normal(), IndicatorOff ) );
121 newPal.setDisabled( *colorGroup( newPal.normal(), IndicatorOff ) ); 184 newPal.setDisabled( *colorGroup( newPal.normal(), IndicatorOff ) );
122 } 185 }
123 if ( isColor( IndicatorOn ) ) 186 if ( isColor( IndicatorOn ) )
124 newPal.setActive( *colorGroup( newPal.active(), IndicatorOn ) ); 187 newPal.setActive( *colorGroup( newPal.active(), IndicatorOn ) );
125 w->setPalette( newPal ); 188 w->setPalette( newPal );
126 } 189 }
127 } 190 }
128 if ( w->inherits( "QRadioButton" ) ) { 191 else if ( w->inherits( "QRadioButton" ) ) {
129 if ( isColor( ExIndicatorOff ) || isColor( ExIndicatorOn ) ) { 192 if ( isColor( ExIndicatorOff ) || isColor( ExIndicatorOn ) ) {
130 QPalette newPal( w->palette() ); 193 QPalette newPal( w->palette() );
131 w->setPalettePropagation( QWidget::SamePalette ); 194 w->setPalettePropagation( QWidget::SamePalette );
132 if ( isColor( ExIndicatorOff ) ) { 195 if ( isColor( ExIndicatorOff ) ) {
133 newPal.setNormal( *colorGroup( newPal.normal(), ExIndicatorOff ) ); 196 newPal.setNormal( *colorGroup( newPal.normal(), ExIndicatorOff ) );
134 newPal.setDisabled( *colorGroup( newPal.normal(), 197 newPal.setDisabled( *colorGroup( newPal.normal(),
135 ExIndicatorOff ) ); 198 ExIndicatorOff ) );
136 } 199 }
137 if ( isColor( ExIndicatorOn ) ) 200 if ( isColor( ExIndicatorOn ) )
138 newPal.setActive( *colorGroup( newPal.active(), ExIndicatorOn ) ); 201 newPal.setActive( *colorGroup( newPal.active(), ExIndicatorOn ) );
139 w->setPalette( newPal ); 202 w->setPalette( newPal );
140 } 203 }
141 } 204 }
205 else if ( w-> inherits ( "QProgressBar" ) ) {
206 w-> installEventFilter ( this );
207 }
142} 208}
143 209
144void OThemeStyle::unPolish( QWidget* w ) 210void OThemeStyle::unPolish( QWidget* w )
145{ 211{
146 if ( !w->isTopLevel() ) { 212 if ( !w->isTopLevel() ) {
147 if ( w->inherits( "QGroupBox" ) 213 if ( w->inherits( "QGroupBox" )
148 || w->inherits( "QTabWidget" ) ) { 214 || w->inherits( "QTabWidget" ) ) {
149 w->setAutoMask( FALSE ); 215 w->setAutoMask( FALSE );
150 return ; 216 return ;
151 } 217 }
152 if ( w->inherits( "QLabel" ) 218 if ( w->inherits( "QLabel" )
153 || w->inherits( "QSlider" ) 219 || w->inherits( "QSlider" )
154 || w->inherits( "QButton" ) 220 || w->inherits( "QButton" )
155 || w->inherits( "QProgressBar" ) 221 || w->inherits( "QProgressBar" )
156 ) { 222 ) {
157 w->setBackgroundOrigin( QWidget::WidgetOrigin ); 223 w->setBackgroundOrigin( QWidget::WidgetOrigin );
158 } 224 }
159 } 225 }
160 if ( w->inherits( "QPopupMenu" ) ) 226 if ( w->inherits( "QPopupMenu" ) )
161 w->unsetPalette(); 227 w->unsetPalette();
162 if ( w->inherits( "QCheckBox" ) ) 228 else if ( w->inherits( "QCheckBox" ) )
163 w->unsetPalette(); 229 w->unsetPalette();
164 if ( w->inherits( "QRadioButton" ) ) 230 else if ( w->inherits( "QRadioButton" ) )
165 w->unsetPalette(); 231 w->unsetPalette();
232 else if ( w-> inherits ( "QProgressBar" ) )
233 w-> removeEventFilter ( this );
234}
235
236bool OThemeStyle::eventFilter ( QObject *obj, QEvent *ev )
237{
238 // only QProgressBar so far
239
240 if ( ev-> type ( ) == QEvent::Paint ) {
241 HackProgressBar *pb = (HackProgressBar *) obj;
242 pb-> paint ((QPaintEvent *) ev, this );
243 return true;
244 }
245 return false;
166} 246}
167 247
168void OThemeStyle::drawBaseButton( QPainter *p, int x, int y, int w, int h, 248void OThemeStyle::drawBaseButton( QPainter *p, int x, int y, int w, int h,
169 const QColorGroup &g, bool sunken, bool 249 const QColorGroup &g, bool sunken, bool
170 rounded, WidgetType type, const QBrush * ) 250 rounded, WidgetType type, const QBrush * )
171{ 251{
172 int offset = borderPixmap( type ) ? 0 : decoWidth( type ); 252 int offset = borderPixmap( type ) ? 0 : decoWidth( type );
173 QPen oldPen = p->pen(); 253 QPen oldPen = p->pen();
174 254
175 // handle reverse bevel here since it uses decowidth differently 255 // handle reverse bevel here since it uses decowidth differently
176 if ( gradientHint( type ) == GrReverseBevel ) { 256 if ( gradientHint( type ) == GrReverseBevel ) {
177 int i; 257 int i;
178 bitBlt( p->device(), x, y, scalePixmap( w, h, type ), 0, 0, w, h, 258 bitBlt( p->device(), x, y, scalePixmap( w, h, type ), 0, 0, w, h,
179 Qt::CopyROP, true ); 259 Qt::CopyROP, true );
180 p->setPen( g.text() ); 260 p->setPen( g.text() );
181 for ( i = 0; i < borderWidth( type ); ++i, ++x, ++y, w -= 2, h -= 2 ) 261 for ( i = 0; i < borderWidth( type ); ++i, ++x, ++y, w -= 2, h -= 2 )
@@ -1334,49 +1414,75 @@ void OThemeStyle::drawFocusRect( QPainter *p, const QRect &r,
1334 int i = focusOffset(); 1414 int i = focusOffset();
1335 p->drawLine( r.x() + i, r.y() + 1 + i, r.x() + i, r.bottom() - 1 - i ); 1415 p->drawLine( r.x() + i, r.y() + 1 + i, r.x() + i, r.bottom() - 1 - i );
1336 p->drawLine( r.x() + 1 + i, r.y() + i, r.right() - 1 - i, r.y() + i ); 1416 p->drawLine( r.x() + 1 + i, r.y() + i, r.right() - 1 - i, r.y() + i );
1337 p->setPen( g.light() ); 1417 p->setPen( g.light() );
1338 p->drawLine( r.right() - i, r.y() + 1 + i, r.right() - i, r.bottom() - 1 - i ); 1418 p->drawLine( r.right() - i, r.y() + 1 + i, r.right() - i, r.bottom() - 1 - i );
1339 p->drawLine( r.x() + 1 + i, r.bottom() - i, r.right() - 1 - i, r.bottom() - i ); 1419 p->drawLine( r.x() + 1 + i, r.bottom() - i, r.right() - 1 - i, r.bottom() - i );
1340 } 1420 }
1341} 1421}
1342 1422
1343#if 0 1423#if 0
1344void OThemeStyle::drawKMenuBar( QPainter *p, int x, int y, int w, int h, 1424void OThemeStyle::drawKMenuBar( QPainter *p, int x, int y, int w, int h,
1345 const QColorGroup &g, bool, QBrush * ) 1425 const QColorGroup &g, bool, QBrush * )
1346{ 1426{
1347 drawBaseButton( p, x, y, w, h, *colorGroup( g, MenuBar ), false, false, 1427 drawBaseButton( p, x, y, w, h, *colorGroup( g, MenuBar ), false, false,
1348 MenuBar ); 1428 MenuBar );
1349} 1429}
1430#endif
1350 1431
1351void OThemeStyle::drawKMenuItem( QPainter *p, int x, int y, int w, int h, 1432void OThemeStyle::drawMenuBarItem( QPainter *p, int x, int y, int w, int h,
1352 const QColorGroup &g, bool active, 1433 QMenuItem *mi, const QColorGroup &g,
1353 QMenuItem *mi, QBrush * ) 1434 bool /*enabled*/, bool active )
1354{ 1435{
1436 if(active){
1437 x -= 2; // Bug in Qt/E
1438 y -= 2;
1439 w += 2;
1440 h += 2;
1441 }
1442
1355 const QColorGroup * cg = colorGroup( g, active ? MenuBarItem : MenuBar ); 1443 const QColorGroup * cg = colorGroup( g, active ? MenuBarItem : MenuBar );
1356 QColor btext = cg->buttonText(); 1444 QColor btext = cg->buttonText();
1357 if ( active ) 1445 if ( active )
1358 drawBaseButton( p, x, y, w, h, *cg, false, false, MenuBarItem ); 1446 drawBaseButton( p, x, y, w, h, *cg, false, false, MenuBarItem );
1359 //qDrawShadePanel(p, x, y, w, h, *cg, false, 1); 1447 //qDrawShadePanel(p, x, y, w, h, *cg, false, 1);
1360 1448
1361 drawItem( p, x, y, w, h, AlignCenter | ShowPrefix | DontClip | SingleLine, 1449 drawItem( p, x, y, w, h, AlignCenter | ShowPrefix | DontClip | SingleLine,
1362 *cg, mi->isEnabled(), mi->pixmap(), mi->text(), 1450 *cg, mi-> isEnabled ( ), mi->pixmap(), mi->text(),
1363 -1, &btext ); 1451 -1, &btext );
1364 ;
1365} 1452}
1366 1453
1454
1455
1456void OThemeStyle::drawProgressBar ( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, int percent )
1457{
1458 const QColorGroup * cg = colorGroup( g, ProgressBg );
1459 QBrush bg;
1460 bg.setColor( cg->color( QColorGroup::Background ) );
1461 if ( isPixmap( ProgressBg ) )
1462 bg.setPixmap( *uncached( ProgressBg ) );
1463
1464 int pw = w * percent / 100;
1465
1466 p-> fillRect ( x + pw, y, w - pw, h, bg ); // ### TODO
1467
1468 drawBaseButton( p, x, y, pw, h, *cg, false, false, ProgressBar );
1469}
1470
1471#if 0
1472
1367void OThemeStyle::drawKProgressBlock( QPainter *p, int x, int y, int w, int h, 1473void OThemeStyle::drawKProgressBlock( QPainter *p, int x, int y, int w, int h,
1368 const QColorGroup &g, QBrush * ) 1474 const QColorGroup &g, QBrush * )
1369{ 1475{
1370 drawBaseButton( p, x, y, w, h, *colorGroup( g, ProgressBar ), false, false, 1476 drawBaseButton( p, x, y, w, h, *colorGroup( g, ProgressBar ), false, false,
1371 ProgressBar ); 1477 ProgressBar );
1372} 1478}
1373 1479
1374void OThemeStyle::getKProgressBackground( const QColorGroup &g, QBrush &bg ) 1480void OThemeStyle::getKProgressBackground( const QColorGroup &g, QBrush &bg )
1375{ 1481{
1376 const QColorGroup * cg = colorGroup( g, ProgressBg ); 1482 const QColorGroup * cg = colorGroup( g, ProgressBg );
1377 bg.setColor( cg->color( QColorGroup::Background ) ); 1483 bg.setColor( cg->color( QColorGroup::Background ) );
1378 if ( isPixmap( ProgressBg ) ) 1484 if ( isPixmap( ProgressBg ) )
1379 bg.setPixmap( *uncached( ProgressBg ) ); 1485 bg.setPixmap( *uncached( ProgressBg ) );
1380} 1486}
1381#endif 1487#endif
1382 1488
diff --git a/noncore/styles/theme/othemestyle.h b/noncore/styles/theme/othemestyle.h
index 52445c4..406b35b 100644
--- a/noncore/styles/theme/othemestyle.h
+++ b/noncore/styles/theme/othemestyle.h
@@ -13,32 +13,34 @@
13 You should have received a copy of the GNU Library General Public License 13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to 14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 15 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 Boston, MA 02111-1307, USA. 16 Boston, MA 02111-1307, USA.
17*/ 17*/
18#ifndef __KTHEMESTYLE_H 18#ifndef __KTHEMESTYLE_H
19#define __KTHEMESTYLE_H 19#define __KTHEMESTYLE_H
20 20
21#include "othemebase.h" 21#include "othemebase.h"
22#include <qwindowdefs.h> 22#include <qwindowdefs.h>
23#include <qobject.h> 23#include <qobject.h>
24#include <qbutton.h> 24#include <qbutton.h>
25#include <qpushbutton.h> 25#include <qpushbutton.h>
26#include <qscrollbar.h> 26#include <qscrollbar.h>
27#include <qstring.h> 27#include <qstring.h>
28 28
29class QProgressBar;
30
29 31
30/** 32/**
31 * KDE themed styles. 33 * KDE themed styles.
32 * 34 *
33 * It provides methods for 35 * It provides methods for
34 * drawing most widgets with user-specified borders, highlights, pixmaps, 36 * drawing most widgets with user-specified borders, highlights, pixmaps,
35 * etc. It also handles various other settings such as scrollbar types, 37 * etc. It also handles various other settings such as scrollbar types,
36 * rounded buttons, and shading types. For a full list of parameters this 38 * rounded buttons, and shading types. For a full list of parameters this
37 * class handles refer to the KDE theme configuration documentation. 39 * class handles refer to the KDE theme configuration documentation.
38 * 40 *
39 */ 41 */
40 42
41class OThemeStyle: public OThemeBase 43class OThemeStyle: public OThemeBase
42{ 44{
43 Q_OBJECT 45 Q_OBJECT
44public: 46public:
@@ -50,32 +52,34 @@ public:
50 */ 52 */
51 OThemeStyle( const QString &configFile = QString::null ); 53 OThemeStyle( const QString &configFile = QString::null );
52 ~OThemeStyle(); 54 ~OThemeStyle();
53 virtual void polish( QWidget* ); 55 virtual void polish( QWidget* );
54 virtual void unPolish( QWidget* ); 56 virtual void unPolish( QWidget* );
55 /** 57 /**
56 * By default this just sets the background brushes to the pixmapped 58 * By default this just sets the background brushes to the pixmapped
57 * background. 59 * background.
58 */ 60 */
59 virtual void polish( QApplication *app ); 61 virtual void polish( QApplication *app );
60 virtual void unPolish( QApplication* ); 62 virtual void unPolish( QApplication* );
61 63
62 /// @internal 64 /// @internal
63 // to make it possible for derived classes to overload this function 65 // to make it possible for derived classes to overload this function
64 virtual void polish( QPalette& pal ); 66 virtual void polish( QPalette& pal );
65 67
68 virtual bool eventFilter ( QObject *obj, QEvent *ev );
69
66 /** 70 /**
67 * This is a convenience method for drawing widgets with 71 * This is a convenience method for drawing widgets with
68 * borders, highlights, pixmaps, colors, etc... 72 * borders, highlights, pixmaps, colors, etc...
69 * You specify the widget type and it will draw it according to the 73 * You specify the widget type and it will draw it according to the
70 * config file settings. 74 * config file settings.
71 * 75 *
72 * @param p The QPainter to draw on. 76 * @param p The QPainter to draw on.
73 * @param g The color group to use. 77 * @param g The color group to use.
74 * @param rounded @p true if the widget is rounded, @p false if rectangular. 78 * @param rounded @p true if the widget is rounded, @p false if rectangular.
75 * @param type The widget type to paint. 79 * @param type The widget type to paint.
76 * @param fill An optional fill brush. Currently ignored (the config file 80 * @param fill An optional fill brush. Currently ignored (the config file
77 * is used instead). 81 * is used instead).
78 */ 82 */
79 virtual void drawBaseButton( QPainter *p, int x, int y, int w, int h, 83 virtual void drawBaseButton( QPainter *p, int x, int y, int w, int h,
80 const QColorGroup &g, bool sunken = FALSE, 84 const QColorGroup &g, bool sunken = FALSE,
81 bool rounded = FALSE, WidgetType type = Bevel, 85 bool rounded = FALSE, WidgetType type = Bevel,
@@ -299,38 +303,35 @@ public:
299 /** 303 /**
300 * Draw the text for a pushbutton. 304 * Draw the text for a pushbutton.
301 */ 305 */
302 virtual void drawPushButtonLabel( QPushButton *btn, QPainter *p ); 306 virtual void drawPushButtonLabel( QPushButton *btn, QPainter *p );
303 /** 307 /**
304 * Draw a menubar. 308 * Draw a menubar.
305 */ 309 */
306#if 0 310#if 0
307 311
308 void drawKMenuBar( QPainter *p, int x, int y, int w, int h, 312 void drawKMenuBar( QPainter *p, int x, int y, int w, int h,
309 const QColorGroup &g, bool macMode, 313 const QColorGroup &g, bool macMode,
310 QBrush *fill = NULL ); 314 QBrush *fill = NULL );
311#endif 315#endif
312 /** 316 /**
313 * Draw a menubar item. 317 * Draw a menubar item.
314 */ 318 */
315#if 0 319 virtual void drawMenuBarItem( QPainter *p, int x, int y, int w, int h,
316 320 QMenuItem *item, const QColorGroup &g,
317 virtual void drawKMenuItem( QPainter *p, int x, int y, int w, int h, 321 bool enabled, bool active );
318 const QColorGroup &g, bool active,
319 QMenuItem *item, QBrush *fill = NULL );
320#endif
321 /** 322 /**
322 * Return the width of the splitter as specified in the config file. 323 * Return the width of the splitter as specified in the config file.
323 */ 324 */
324 virtual int splitterWidth() const; 325 virtual int splitterWidth() const;
325 /** 326 /**
326 * Draw a splitter widget. 327 * Draw a splitter widget.
327 */ 328 */
328 virtual void drawSplitter( QPainter *p, int x, int y, int w, int h, 329 virtual void drawSplitter( QPainter *p, int x, int y, int w, int h,
329 const QColorGroup &g, Orientation ); 330 const QColorGroup &g, Orientation );
330 /** 331 /**
331 * Draw a checkmark. 332 * Draw a checkmark.
332 */ 333 */
333 virtual void drawCheckMark( QPainter *p, int x, int y, int w, int h, 334 virtual void drawCheckMark( QPainter *p, int x, int y, int w, int h,
334 const QColorGroup &g, bool act, bool dis ); 335 const QColorGroup &g, bool act, bool dis );
335 /** 336 /**
336 * Draw a menu item. 337 * Draw a menu item.
@@ -339,33 +340,32 @@ public:
339 * inactive menu backgrounds to the entire widget. 340 * inactive menu backgrounds to the entire widget.
340 */ 341 */
341 virtual void drawPopupMenuItem( QPainter *p, bool checkable, int maxpmw, 342 virtual void drawPopupMenuItem( QPainter *p, bool checkable, int maxpmw,
342 int tab, QMenuItem *mi, const QPalette &pal, 343 int tab, QMenuItem *mi, const QPalette &pal,
343 bool act, bool enabled, int x, int y, int w, 344 bool act, bool enabled, int x, int y, int w,
344 int h ); 345 int h );
345 int popupMenuItemHeight( bool checkable, QMenuItem *mi, 346 int popupMenuItemHeight( bool checkable, QMenuItem *mi,
346 const QFontMetrics &fm ); 347 const QFontMetrics &fm );
347 /** 348 /**
348 * Draw the focus rectangle. 349 * Draw the focus rectangle.
349 */ 350 */
350 void drawFocusRect( QPainter *p, const QRect &r, const QColorGroup &g, 351 void drawFocusRect( QPainter *p, const QRect &r, const QColorGroup &g,
351 const QColor *c = 0, bool atBorder = false ); 352 const QColor *c = 0, bool atBorder = false );
352 /** 353 /**
353 * Draw a @ref KProgess bar. 354 * Draw a @ref KProgess bar.
354 */ 355 */
355 // virtual void drawKProgressBlock(QPainter *p, int x, int y, int w, int h, 356 virtual void drawProgressBar (QPainter *, int , int , int , int , const QColorGroup &, int );
356 // const QColorGroup &g, QBrush *fill);
357 /** 357 /**
358 * Return the background for @ref KProgress. 358 * Return the background for @ref KProgress.
359 */ 359 */
360 // virtual void getKProgressBackground(const QColorGroup &g, QBrush &bg); 360 // virtual void getKProgressBackground(const QColorGroup &g, QBrush &bg);
361 virtual void tabbarMetrics( const QTabBar*, int&, int&, int& ); 361 virtual void tabbarMetrics( const QTabBar*, int&, int&, int& );
362 virtual void drawTab( QPainter*, const QTabBar*, QTab*, bool selected ); 362 virtual void drawTab( QPainter*, const QTabBar*, QTab*, bool selected );
363 virtual void drawTabMask( QPainter*, const QTabBar*, QTab*, bool selected ); 363 virtual void drawTabMask( QPainter*, const QTabBar*, QTab*, bool selected );
364protected: 364protected:
365 QPalette oldPalette, popupPalette, indiPalette, exIndiPalette; 365 QPalette oldPalette, popupPalette, indiPalette, exIndiPalette;
366 366
367 class OThemeStylePrivate; 367 class OThemeStylePrivate;
368 OThemeStylePrivate *d; 368 OThemeStylePrivate *d;
369}; 369};
370 370
371#endif 371#endif