summaryrefslogtreecommitdiff
authorleseb <leseb>2002-07-02 21:23:40 (UTC)
committer leseb <leseb>2002-07-02 21:23:40 (UTC)
commitd83f58a1a4a314a3ef8b25dd78432488922a9e31 (patch) (unidiff)
tree353b815ff13bb34594fa8db4d15233ed6b8c27e4
parent2481ac4013794f95c53580f99b4b761142e4ee8f (diff)
downloadopie-d83f58a1a4a314a3ef8b25dd78432488922a9e31.zip
opie-d83f58a1a4a314a3ef8b25dd78432488922a9e31.tar.gz
opie-d83f58a1a4a314a3ef8b25dd78432488922a9e31.tar.bz2
Fix QToolButton drawing
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/theme/othemestyle.cpp8
-rw-r--r--noncore/styles/theme/othemestyle.h6
2 files changed, 14 insertions, 0 deletions
diff --git a/noncore/styles/theme/othemestyle.cpp b/noncore/styles/theme/othemestyle.cpp
index 61127b8..d97b026 100644
--- a/noncore/styles/theme/othemestyle.cpp
+++ b/noncore/styles/theme/othemestyle.cpp
@@ -248,128 +248,136 @@ void OThemeStyle::drawBaseMask( QPainter *p, int x, int y, int w, int h,
248 static const QCOORD btm_right_fill[] = { 248 static const QCOORD btm_right_fill[] = {
249 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4, 249 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 0, 1, 1, 1, 2, 1, 3, 1, 4,
250 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, 3, 1, 3, 2, 3, 0, 4, 1, 4 250 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, 3, 1, 3, 2, 3, 0, 4, 1, 4
251 }; 251 };
252 252
253 static const QCOORD top_left_fill[] = { 253 static const QCOORD top_left_fill[] = {
254 3, 0, 4, 0, 2, 1, 3, 1, 4, 1, 1, 2, 2, 2, 3, 2, 4, 2, 0, 3, 254 3, 0, 4, 0, 2, 1, 3, 1, 4, 1, 1, 2, 2, 2, 3, 2, 4, 2, 0, 3,
255 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 255 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4
256 }; 256 };
257 257
258 static const QCOORD top_right_fill[] = { 258 static const QCOORD top_right_fill[] = {
259 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 0, 2, 1, 2, 2, 2, 3, 2, 0, 259 0, 0, 1, 0, 0, 1, 1, 1, 2, 1, 0, 2, 1, 2, 2, 2, 3, 2, 0,
260 3, 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4 260 3, 1, 3, 2, 3, 3, 3, 4, 3, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4
261 }; 261 };
262 262
263 QBrush fillBrush( color1, SolidPattern ); 263 QBrush fillBrush( color1, SolidPattern );
264 p->setPen( color1 ); 264 p->setPen( color1 );
265 if ( round && w > 19 && h > 19 ) { 265 if ( round && w > 19 && h > 19 ) {
266 int x2 = x + w - 1; 266 int x2 = x + w - 1;
267 int y2 = y + h - 1; 267 int y2 = y + h - 1;
268 QPointArray a( QCOORDARRLEN( top_left_fill ), top_left_fill ); 268 QPointArray a( QCOORDARRLEN( top_left_fill ), top_left_fill );
269 a.translate( 1, 1 ); 269 a.translate( 1, 1 );
270 p->drawPoints( a ); 270 p->drawPoints( a );
271 a.setPoints( QCOORDARRLEN( btm_left_fill ), btm_left_fill ); 271 a.setPoints( QCOORDARRLEN( btm_left_fill ), btm_left_fill );
272 a.translate( 1, h - 6 ); 272 a.translate( 1, h - 6 );
273 p->drawPoints( a ); 273 p->drawPoints( a );
274 a.setPoints( QCOORDARRLEN( top_right_fill ), top_right_fill ); 274 a.setPoints( QCOORDARRLEN( top_right_fill ), top_right_fill );
275 a.translate( w - 6, 1 ); 275 a.translate( w - 6, 1 );
276 p->drawPoints( a ); 276 p->drawPoints( a );
277 a.setPoints( QCOORDARRLEN( btm_right_fill ), btm_right_fill ); 277 a.setPoints( QCOORDARRLEN( btm_right_fill ), btm_right_fill );
278 a.translate( w - 6, h - 6 ); 278 a.translate( w - 6, h - 6 );
279 p->drawPoints( a ); 279 p->drawPoints( a );
280 280
281 p->fillRect( x + 6, y, w - 12, h, fillBrush ); 281 p->fillRect( x + 6, y, w - 12, h, fillBrush );
282 p->fillRect( x, y + 6, x + 6, h - 12, fillBrush ); 282 p->fillRect( x, y + 6, x + 6, h - 12, fillBrush );
283 p->fillRect( x2 - 6, y + 6, x2, h - 12, fillBrush ); 283 p->fillRect( x2 - 6, y + 6, x2, h - 12, fillBrush );
284 p->drawLine( x + 6, y, x2 - 6, y ); 284 p->drawLine( x + 6, y, x2 - 6, y );
285 p->drawLine( x + 6, y2, x2 - 6, y2 ); 285 p->drawLine( x + 6, y2, x2 - 6, y2 );
286 p->drawLine( x, y + 6, x, y2 - 6 ); 286 p->drawLine( x, y + 6, x, y2 - 6 );
287 p->drawLine( x2, y + 6, x2, y2 - 6 ); 287 p->drawLine( x2, y + 6, x2, y2 - 6 );
288 288
289 } 289 }
290 else 290 else
291 p->fillRect( x, y, w, h, fillBrush ); 291 p->fillRect( x, y, w, h, fillBrush );
292} 292}
293 293
294void OThemeStyle::drawButtonMask( QPainter *p, int x, int y, int w, int h ) 294void OThemeStyle::drawButtonMask( QPainter *p, int x, int y, int w, int h )
295{ 295{
296 drawBaseMask( p, x, y, w, h, roundButton() ); 296 drawBaseMask( p, x, y, w, h, roundButton() );
297} 297}
298 298
299void OThemeStyle::drawComboButtonMask( QPainter *p, int x, int y, int w, int h ) 299void OThemeStyle::drawComboButtonMask( QPainter *p, int x, int y, int w, int h )
300{ 300{
301 drawBaseMask( p, x, y, w, h, roundComboBox() ); 301 drawBaseMask( p, x, y, w, h, roundComboBox() );
302} 302}
303 303
304void OThemeStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, 304void OThemeStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h,
305 const QColorGroup &g, bool sunken, 305 const QColorGroup &g, bool sunken,
306 const QBrush * ) 306 const QBrush * )
307{ 307{
308 WidgetType type = sunken ? BevelDown : Bevel; 308 WidgetType type = sunken ? BevelDown : Bevel;
309 drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type ); 309 drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type );
310} 310}
311 311
312void OThemeStyle::drawToolButton( QPainter *p, int x, int y, int w, int h,
313 const QColorGroup &g, bool sunken,
314 const QBrush * )
315{
316 WidgetType type = sunken ? ToolButtonDown : ToolButton;
317 drawBaseButton( p, x, y, w, h, *colorGroup( g, type ), sunken, false, type );
318}
319
312#if 0 320#if 0
313void OThemeStyle::drawKToolBarButton( QPainter *p, int x, int y, int w, int h, 321void OThemeStyle::drawKToolBarButton( QPainter *p, int x, int y, int w, int h,
314 const QColorGroup &g, bool sunken, 322 const QColorGroup &g, bool sunken,
315 bool raised, bool enabled, bool popup, 323 bool raised, bool enabled, bool popup,
316 KToolButtonType type, const QString &btext, 324 KToolButtonType type, const QString &btext,
317 const QPixmap *pixmap, QFont *font, 325 const QPixmap *pixmap, QFont *font,
318 QWidget * ) 326 QWidget * )
319{ 327{
320 QFont tmp_font( QString::fromLatin1( "Helvetica" ), 10 ); 328 QFont tmp_font( QString::fromLatin1( "Helvetica" ), 10 );
321 if ( font ) 329 if ( font )
322 tmp_font = *font; 330 tmp_font = *font;
323 QFontMetrics fm( tmp_font ); 331 QFontMetrics fm( tmp_font );
324 WidgetType widget = sunken ? ToolButtonDown : ToolButton; 332 WidgetType widget = sunken ? ToolButtonDown : ToolButton;
325 333
326 drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, false, 334 drawBaseButton( p, x, y, w, h, *colorGroup( g, widget ), sunken, false,
327 widget ); 335 widget );
328 int dx, dy; 336 int dx, dy;
329 if ( type == Icon ) { // icon only 337 if ( type == Icon ) { // icon only
330 if ( pixmap ) { 338 if ( pixmap ) {
331 dx = ( w - pixmap->width() ) / 2; 339 dx = ( w - pixmap->width() ) / 2;
332 dy = ( h - pixmap->height() ) / 2; 340 dy = ( h - pixmap->height() ) / 2;
333 if ( sunken ) { 341 if ( sunken ) {
334 ++dx; 342 ++dx;
335 ++dy; 343 ++dy;
336 } 344 }
337 p->drawPixmap( x + dx, y + dy, *pixmap ); 345 p->drawPixmap( x + dx, y + dy, *pixmap );
338 } 346 }
339 } 347 }
340 else if ( type == IconTextRight ) { // icon and text (if any) 348 else if ( type == IconTextRight ) { // icon and text (if any)
341 if ( pixmap ) { 349 if ( pixmap ) {
342 dx = 4; 350 dx = 4;
343 dy = ( h - pixmap->height() ) / 2; 351 dy = ( h - pixmap->height() ) / 2;
344 if ( sunken ) { 352 if ( sunken ) {
345 ++dx; 353 ++dx;
346 ++dy; 354 ++dy;
347 } 355 }
348 p->drawPixmap( x + dx, y + dy, *pixmap ); 356 p->drawPixmap( x + dx, y + dy, *pixmap );
349 } 357 }
350 if ( !btext.isNull() ) { 358 if ( !btext.isNull() ) {
351 int tf = AlignVCenter | AlignLeft; 359 int tf = AlignVCenter | AlignLeft;
352 if ( pixmap ) 360 if ( pixmap )
353 dx = 4 + pixmap->width() + 2; 361 dx = 4 + pixmap->width() + 2;
354 else 362 else
355 dx = 4; 363 dx = 4;
356 dy = 0; 364 dy = 0;
357 if ( sunken ) { 365 if ( sunken ) {
358 ++dx; 366 ++dx;
359 ++dy; 367 ++dy;
360 } 368 }
361 if ( font ) 369 if ( font )
362 p->setFont( *font ); 370 p->setFont( *font );
363 if ( raised ) 371 if ( raised )
364 p->setPen( KGlobalSettings::toolBarHighlightColor() ); 372 p->setPen( KGlobalSettings::toolBarHighlightColor() );
365 p->drawText( x + dx, y + dy, w - dx, h, tf, btext ); 373 p->drawText( x + dx, y + dy, w - dx, h, tf, btext );
366 } 374 }
367 } 375 }
368 else if ( type == Text ) { // only text, even if there is a icon 376 else if ( type == Text ) { // only text, even if there is a icon
369 if ( !btext.isNull() ) { 377 if ( !btext.isNull() ) {
370 int tf = AlignTop | AlignLeft; 378 int tf = AlignTop | AlignLeft;
371 if ( !enabled ) 379 if ( !enabled )
372 p->setPen( g.dark() ); 380 p->setPen( g.dark() );
373 dx = ( w - fm.width( btext ) ) / 2; 381 dx = ( w - fm.width( btext ) ) / 2;
374 dy = ( h - fm.lineSpacing() ) / 2; 382 dy = ( h - fm.lineSpacing() ) / 2;
375 if ( sunken ) { 383 if ( sunken ) {
diff --git a/noncore/styles/theme/othemestyle.h b/noncore/styles/theme/othemestyle.h
index 02bec78..52445c4 100644
--- a/noncore/styles/theme/othemestyle.h
+++ b/noncore/styles/theme/othemestyle.h
@@ -48,128 +48,134 @@ public:
48 * @param configFile A KConfig file to use as the theme configuration. 48 * @param configFile A KConfig file to use as the theme configuration.
49 * Defaults to ~/.kderc. 49 * Defaults to ~/.kderc.
50 */ 50 */
51 OThemeStyle( const QString &configFile = QString::null ); 51 OThemeStyle( const QString &configFile = QString::null );
52 ~OThemeStyle(); 52 ~OThemeStyle();
53 virtual void polish( QWidget* ); 53 virtual void polish( QWidget* );
54 virtual void unPolish( QWidget* ); 54 virtual void unPolish( QWidget* );
55 /** 55 /**
56 * By default this just sets the background brushes to the pixmapped 56 * By default this just sets the background brushes to the pixmapped
57 * background. 57 * background.
58 */ 58 */
59 virtual void polish( QApplication *app ); 59 virtual void polish( QApplication *app );
60 virtual void unPolish( QApplication* ); 60 virtual void unPolish( QApplication* );
61 61
62 /// @internal 62 /// @internal
63 // to make it possible for derived classes to overload this function 63 // to make it possible for derived classes to overload this function
64 virtual void polish( QPalette& pal ); 64 virtual void polish( QPalette& pal );
65 65
66 /** 66 /**
67 * This is a convenience method for drawing widgets with 67 * This is a convenience method for drawing widgets with
68 * borders, highlights, pixmaps, colors, etc... 68 * borders, highlights, pixmaps, colors, etc...
69 * You specify the widget type and it will draw it according to the 69 * You specify the widget type and it will draw it according to the
70 * config file settings. 70 * config file settings.
71 * 71 *
72 * @param p The QPainter to draw on. 72 * @param p The QPainter to draw on.
73 * @param g The color group to use. 73 * @param g The color group to use.
74 * @param rounded @p true if the widget is rounded, @p false if rectangular. 74 * @param rounded @p true if the widget is rounded, @p false if rectangular.
75 * @param type The widget type to paint. 75 * @param type The widget type to paint.
76 * @param fill An optional fill brush. Currently ignored (the config file 76 * @param fill An optional fill brush. Currently ignored (the config file
77 * is used instead). 77 * is used instead).
78 */ 78 */
79 virtual void drawBaseButton( QPainter *p, int x, int y, int w, int h, 79 virtual void drawBaseButton( QPainter *p, int x, int y, int w, int h,
80 const QColorGroup &g, bool sunken = FALSE, 80 const QColorGroup &g, bool sunken = FALSE,
81 bool rounded = FALSE, WidgetType type = Bevel, 81 bool rounded = FALSE, WidgetType type = Bevel,
82 const QBrush *fill = 0 ); 82 const QBrush *fill = 0 );
83 /** 83 /**
84 * Draw a mask with for widgets that may be rounded. 84 * Draw a mask with for widgets that may be rounded.
85 * 85 *
86 *Currently used 86 *Currently used
87 * by pushbuttons and comboboxes. 87 * by pushbuttons and comboboxes.
88 * 88 *
89 * @param p The QPainter to draw on. 89 * @param p The QPainter to draw on.
90 * @param rounded @p true if the widget is rounded, @p false if rectangular. 90 * @param rounded @p true if the widget is rounded, @p false if rectangular.
91 */ 91 */
92 virtual void drawBaseMask( QPainter *p, int x, int y, int w, int h, 92 virtual void drawBaseMask( QPainter *p, int x, int y, int w, int h,
93 bool rounded ); 93 bool rounded );
94 /** 94 /**
95 * Draw a pushbutton. 95 * Draw a pushbutton.
96 * 96 *
97 * This calls @ref drawBaseButton() with @p PushButton as the 97 * This calls @ref drawBaseButton() with @p PushButton as the
98 * widget type. 98 * widget type.
99 */ 99 */
100 virtual void drawButton( QPainter *p, int x, int y, int w, int h, 100 virtual void drawButton( QPainter *p, int x, int y, int w, int h,
101 const QColorGroup &g, bool sunken = FALSE, 101 const QColorGroup &g, bool sunken = FALSE,
102 const QBrush *fill = 0 ); 102 const QBrush *fill = 0 );
103 /** 103 /**
104 * Draw a bevel button. 104 * Draw a bevel button.
105 * 105 *
106 * This calls @ref drawBaseButton() with Bevel as the 106 * This calls @ref drawBaseButton() with Bevel as the
107 * widget type. 107 * widget type.
108 */ 108 */
109 virtual void drawBevelButton( QPainter *p, int x, int y, int w, int h, 109 virtual void drawBevelButton( QPainter *p, int x, int y, int w, int h,
110 const QColorGroup &g, bool sunken = FALSE, 110 const QColorGroup &g, bool sunken = FALSE,
111 const QBrush *fill = 0 ); 111 const QBrush *fill = 0 );
112 /**
113 * Draw a toolbar button.
114 */
115 virtual void drawToolButton ( QPainter *p, int x, int y, int w, int h,
116 const QColorGroup &g, bool sunken = FALSE,
117 const QBrush *fill = 0 );
112#if 0 118#if 0
113 /** 119 /**
114 * Draw a toolbar button. 120 * Draw a toolbar button.
115 */ 121 */
116 virtual void drawKToolBarButton( QPainter *p, int x, int y, int w, int h, 122 virtual void drawKToolBarButton( QPainter *p, int x, int y, int w, int h,
117 const QColorGroup &g, bool sunken = false, 123 const QColorGroup &g, bool sunken = false,
118 bool raised = true, bool enabled = true, 124 bool raised = true, bool enabled = true,
119 bool popup = false, KToolButtonType type = Icon, 125 bool popup = false, KToolButtonType type = Icon,
120 const QString &btext = QString::null, 126 const QString &btext = QString::null,
121 const QPixmap *icon = NULL, 127 const QPixmap *icon = NULL,
122 QFont *font = NULL, QWidget *btn = NULL ); 128 QFont *font = NULL, QWidget *btn = NULL );
123 /** 129 /**
124 * Draw the handle used in toolbars. 130 * Draw the handle used in toolbars.
125 */ 131 */
126 void drawKBarHandle( QPainter *p, int x, int y, int w, int h, 132 void drawKBarHandle( QPainter *p, int x, int y, int w, int h,
127 const QColorGroup &g, 133 const QColorGroup &g,
128 KToolBarPos type, QBrush *fill = NULL ); 134 KToolBarPos type, QBrush *fill = NULL );
129 135
130 /** 136 /**
131 * Draw a toolbar. 137 * Draw a toolbar.
132 */ 138 */
133 void drawKToolBar( QPainter *p, int x, int y, int w, int h, 139 void drawKToolBar( QPainter *p, int x, int y, int w, int h,
134 const QColorGroup &g, KToolBarPos type, 140 const QColorGroup &g, KToolBarPos type,
135 QBrush *fill = NULL ); 141 QBrush *fill = NULL );
136#endif 142#endif
137 /** 143 /**
138 * Return the space available in a pushbutton, taking configurable 144 * Return the space available in a pushbutton, taking configurable
139 * borders and highlights into account. 145 * borders and highlights into account.
140 */ 146 */
141 virtual QRect buttonRect( int x, int y, int w, int h ); 147 virtual QRect buttonRect( int x, int y, int w, int h );
142 /** 148 /**
143 * Draw an arrow in the style specified by the config file. 149 * Draw an arrow in the style specified by the config file.
144 */ 150 */
145 virtual void drawArrow( QPainter *p, Qt::ArrowType type, bool down, 151 virtual void drawArrow( QPainter *p, Qt::ArrowType type, bool down,
146 int x, int y, int w, int h, const QColorGroup &g, 152 int x, int y, int w, int h, const QColorGroup &g,
147 bool enabled = true, const QBrush *fill = 0 ); 153 bool enabled = true, const QBrush *fill = 0 );
148 /** 154 /**
149 * Return the size of the exclusive indicator pixmap if one is specified 155 * Return the size of the exclusive indicator pixmap if one is specified
150 * in the config file, otherwise it uses the base style's size. 156 * in the config file, otherwise it uses the base style's size.
151 */ 157 */
152 virtual QSize exclusiveIndicatorSize() const; 158 virtual QSize exclusiveIndicatorSize() const;
153 /** 159 /**
154 * Draw an exclusive indicator widget. 160 * Draw an exclusive indicator widget.
155 * 161 *
156 * If a pixmap is specified in the 162 * If a pixmap is specified in the
157 * config file that is used, otherwise the base style's widget is drawn. 163 * config file that is used, otherwise the base style's widget is drawn.
158 */ 164 */
159 virtual void drawExclusiveIndicator( QPainter* p, int x, int y, int w, 165 virtual void drawExclusiveIndicator( QPainter* p, int x, int y, int w,
160 int h, const QColorGroup &g, bool on, 166 int h, const QColorGroup &g, bool on,
161 bool down = FALSE, 167 bool down = FALSE,
162 bool enabled = TRUE ); 168 bool enabled = TRUE );
163 /** 169 /**
164 * Set the mask of an exclusive indicator widget. 170 * Set the mask of an exclusive indicator widget.
165 * 171 *
166 * If a pixmap is specified 172 * If a pixmap is specified
167 * it is masked according to it's transparent pixels, otherwise the 173 * it is masked according to it's transparent pixels, otherwise the
168 * base style's mask is used. 174 * base style's mask is used.
169 */ 175 */
170 virtual void drawExclusiveIndicatorMask( QPainter *p, int x, int y, int w, 176 virtual void drawExclusiveIndicatorMask( QPainter *p, int x, int y, int w,
171 int h, bool on ); 177 int h, bool on );
172 /** 178 /**
173 * Set the mask of an indicator widget. 179 * Set the mask of an indicator widget.
174 * 180 *
175 * If a pixmap is specified 181 * If a pixmap is specified