summaryrefslogtreecommitdiff
path: root/library/qpestyle.cpp
Unidiff
Diffstat (limited to 'library/qpestyle.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpestyle.cpp3
1 files changed, 0 insertions, 3 deletions
diff --git a/library/qpestyle.cpp b/library/qpestyle.cpp
index 665910c..b61ada4 100644
--- a/library/qpestyle.cpp
+++ b/library/qpestyle.cpp
@@ -1,409 +1,406 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "qpestyle.h" 21#include "qpestyle.h"
22#include <qpe/qpeapplication.h>
23#include <qpushbutton.h>
24 22
25#include <qpainter.h>
26 23
27#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) 24#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
28 25
29#if QT_VERSION >= 300 26#if QT_VERSION >= 300
30 27
31#include <qdrawutil.h> 28#include <qdrawutil.h>
32#include <qcombobox.h> 29#include <qcombobox.h>
33#include <qtabbar.h> 30#include <qtabbar.h>
34 31
35QPEStyle::QPEStyle() 32QPEStyle::QPEStyle()
36{ 33{
37} 34}
38 35
39QPEStyle::~QPEStyle() 36QPEStyle::~QPEStyle()
40{ 37{
41} 38}
42 39
43void QPEStyle::drawPrimitive( PrimitiveElement pe, QPainter *p, const QRect &r, 40void QPEStyle::drawPrimitive( PrimitiveElement pe, QPainter *p, const QRect &r,
44 const QColorGroup &cg, SFlags flags, const QStyleOption &data) const 41 const QColorGroup &cg, SFlags flags, const QStyleOption &data) const
45{ 42{
46 switch ( pe ) { 43 switch ( pe ) {
47 case PE_ButtonTool: 44 case PE_ButtonTool:
48 { 45 {
49 QColorGroup mycg = cg; 46 QColorGroup mycg = cg;
50 if ( flags & Style_On ) { 47 if ( flags & Style_On ) {
51 QBrush fill( cg.mid(), Dense4Pattern ); 48 QBrush fill( cg.mid(), Dense4Pattern );
52 mycg.setBrush( QColorGroup::Button, fill ); 49 mycg.setBrush( QColorGroup::Button, fill );
53 } 50 }
54 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data ); 51 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data );
55 break; 52 break;
56 } 53 }
57 case PE_ButtonCommand: 54 case PE_ButtonCommand:
58 case PE_ButtonDefault: 55 case PE_ButtonDefault:
59 case PE_ButtonBevel: 56 case PE_ButtonBevel:
60 case PE_HeaderSection: 57 case PE_HeaderSection:
61 { 58 {
62 QPen oldPen = p->pen(); 59 QPen oldPen = p->pen();
63 p->fillRect( r.x()+1, r.y()+1, r.width()-2, r.height()-2, cg.brush(QColorGroup::Button) ); 60 p->fillRect( r.x()+1, r.y()+1, r.width()-2, r.height()-2, cg.brush(QColorGroup::Button) );
64 61
65 int x2 = r.right(); 62 int x2 = r.right();
66 int y2 = r.bottom(); 63 int y2 = r.bottom();
67 64
68 if ( flags & (Style_Sunken | Style_Down | Style_On) ) 65 if ( flags & (Style_Sunken | Style_Down | Style_On) )
69 p->setPen( cg.dark() ); 66 p->setPen( cg.dark() );
70 else 67 else
71 p->setPen( cg.light() ); 68 p->setPen( cg.light() );
72 p->drawLine( r.x(), r.y()+1, r.x(), y2-1 ); 69 p->drawLine( r.x(), r.y()+1, r.x(), y2-1 );
73 p->drawLine( r.x()+1, r.y(), x2-1, r.y() ); 70 p->drawLine( r.x()+1, r.y(), x2-1, r.y() );
74 71
75 if ( flags & (Style_Sunken | Style_Down | Style_On) ) 72 if ( flags & (Style_Sunken | Style_Down | Style_On) )
76 p->setPen( cg.light() ); 73 p->setPen( cg.light() );
77 else 74 else
78 p->setPen( cg.dark() ); 75 p->setPen( cg.dark() );
79 p->drawLine( x2, r.y()+1, x2, y2-1 ); 76 p->drawLine( x2, r.y()+1, x2, y2-1 );
80 p->drawLine( r.x()+1, y2, x2-1, y2 ); 77 p->drawLine( r.x()+1, y2, x2-1, y2 );
81 p->setPen( oldPen ); 78 p->setPen( oldPen );
82 break; 79 break;
83 } 80 }
84 case PE_FocusRect: 81 case PE_FocusRect:
85 break; 82 break;
86 case PE_Indicator: 83 case PE_Indicator:
87 { 84 {
88 QColorGroup mycg( cg ); 85 QColorGroup mycg( cg );
89 QBrush fill; 86 QBrush fill;
90 if ( flags & Style_Down ) 87 if ( flags & Style_Down )
91 fill = cg.brush( QColorGroup::Button ); 88 fill = cg.brush( QColorGroup::Button );
92 else 89 else
93 fill = cg.brush( (flags&Style_Enabled) ? QColorGroup::Base : QColorGroup::Background ); 90 fill = cg.brush( (flags&Style_Enabled) ? QColorGroup::Base : QColorGroup::Background );
94 mycg.setBrush( QColorGroup::Button, fill ); 91 mycg.setBrush( QColorGroup::Button, fill );
95 if ( flags&Style_Enabled ) 92 if ( flags&Style_Enabled )
96 flags |= Style_Sunken; 93 flags |= Style_Sunken;
97 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags ); 94 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags );
98 if ( flags & Style_On ) { 95 if ( flags & Style_On ) {
99 QPointArray a( 7*2 ); 96 QPointArray a( 7*2 );
100 int i, xx, yy; 97 int i, xx, yy;
101 xx = r.x()+3; 98 xx = r.x()+3;
102 yy = r.y()+5; 99 yy = r.y()+5;
103 for ( i=0; i<3; i++ ) { 100 for ( i=0; i<3; i++ ) {
104 a.setPoint( 2*i, xx, yy ); 101 a.setPoint( 2*i, xx, yy );
105 a.setPoint( 2*i+1, xx, yy+2 ); 102 a.setPoint( 2*i+1, xx, yy+2 );
106 xx++; yy++; 103 xx++; yy++;
107 } 104 }
108 yy -= 2; 105 yy -= 2;
109 for ( i=3; i<7; i++ ) { 106 for ( i=3; i<7; i++ ) {
110 a.setPoint( 2*i, xx, yy ); 107 a.setPoint( 2*i, xx, yy );
111 a.setPoint( 2*i+1, xx, yy+2 ); 108 a.setPoint( 2*i+1, xx, yy+2 );
112 xx++; yy--; 109 xx++; yy--;
113 } 110 }
114 if ( flags & Style_NoChange ) { 111 if ( flags & Style_NoChange ) {
115 p->setPen( mycg.dark() ); 112 p->setPen( mycg.dark() );
116 } else { 113 } else {
117 p->setPen( mycg.text() ); 114 p->setPen( mycg.text() );
118 } 115 }
119 p->drawLineSegments( a ); 116 p->drawLineSegments( a );
120 } 117 }
121 break; 118 break;
122 } 119 }
123 case PE_ExclusiveIndicator: 120 case PE_ExclusiveIndicator:
124 { 121 {
125 static const QCOORD pts1[] = { // dark lines 122 static const QCOORD pts1[] = { // dark lines
126 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; 123 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 };
127 static const QCOORD pts4[] = { // white lines 124 static const QCOORD pts4[] = { // white lines
128 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, 125 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7,
129 11,4, 10,3, 10,2 }; 126 11,4, 10,3, 10,2 };
130 static const QCOORD pts5[] = { // inner fill 127 static const QCOORD pts5[] = { // inner fill
131 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; 128 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 };
132 129
133 int x, y, w, h; 130 int x, y, w, h;
134 r.rect( &x, &y, &w, &h ); 131 r.rect( &x, &y, &w, &h );
135 p->eraseRect( x, y, w, h ); 132 p->eraseRect( x, y, w, h );
136 QPointArray a( QCOORDARRLEN(pts1), pts1 ); 133 QPointArray a( QCOORDARRLEN(pts1), pts1 );
137 a.translate( x, y ); 134 a.translate( x, y );
138 p->setPen( cg.dark() ); 135 p->setPen( cg.dark() );
139 p->drawPolyline( a ); 136 p->drawPolyline( a );
140 a.setPoints( QCOORDARRLEN(pts4), pts4 ); 137 a.setPoints( QCOORDARRLEN(pts4), pts4 );
141 a.translate( x, y ); 138 a.translate( x, y );
142 p->setPen( cg.light() ); 139 p->setPen( cg.light() );
143 p->drawPolyline( a ); 140 p->drawPolyline( a );
144 a.setPoints( QCOORDARRLEN(pts5), pts5 ); 141 a.setPoints( QCOORDARRLEN(pts5), pts5 );
145 a.translate( x, y ); 142 a.translate( x, y );
146 QColor fillColor = ( flags&Style_Down || !(flags&Style_Enabled) ) ? cg.button() : cg.base(); 143 QColor fillColor = ( flags&Style_Down || !(flags&Style_Enabled) ) ? cg.button() : cg.base();
147 p->setPen( fillColor ); 144 p->setPen( fillColor );
148 p->setBrush( fillColor ) ; 145 p->setBrush( fillColor ) ;
149 p->drawPolygon( a ); 146 p->drawPolygon( a );
150 if ( flags&Style_On ) { 147 if ( flags&Style_On ) {
151 p->setPen( NoPen ); 148 p->setPen( NoPen );
152 p->setBrush( cg.text() ); 149 p->setBrush( cg.text() );
153 p->drawRect( x+5, y+4, 2, 4 ); 150 p->drawRect( x+5, y+4, 2, 4 );
154 p->drawRect( x+4, y+5, 4, 2 ); 151 p->drawRect( x+4, y+5, 4, 2 );
155 } 152 }
156 break; 153 break;
157 } 154 }
158 default: 155 default:
159 QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, data ); 156 QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, data );
160 break; 157 break;
161 } 158 }
162} 159}
163 160
164void QPEStyle::drawControl( ControlElement ce, QPainter *p, 161void QPEStyle::drawControl( ControlElement ce, QPainter *p,
165 const QWidget *widget, const QRect &r, 162 const QWidget *widget, const QRect &r,
166 const QColorGroup &cg, SFlags how, const QStyleOption &data) const 163 const QColorGroup &cg, SFlags how, const QStyleOption &data) const
167{ 164{
168 switch ( ce ) { 165 switch ( ce ) {
169 case CE_PushButton: 166 case CE_PushButton:
170 { 167 {
171 const QPushButton *btn = (QPushButton*)widget; 168 const QPushButton *btn = (QPushButton*)widget;
172 SFlags flags; 169 SFlags flags;
173 flags = Style_Default; 170 flags = Style_Default;
174 if ( btn->isDown() ) 171 if ( btn->isDown() )
175 flags |= Style_Down; 172 flags |= Style_Down;
176 if ( btn->isOn() ) 173 if ( btn->isOn() )
177 flags |= Style_On; 174 flags |= Style_On;
178 if ( btn->isEnabled() ) 175 if ( btn->isEnabled() )
179 flags |= Style_Enabled; 176 flags |= Style_Enabled;
180 if ( btn->isDefault() ) 177 if ( btn->isDefault() )
181 flags |= Style_Default; 178 flags |= Style_Default;
182 if (! btn->isFlat() && !(flags & Style_Down)) 179 if (! btn->isFlat() && !(flags & Style_Down))
183 flags |= Style_Raised; 180 flags |= Style_Raised;
184 p->setPen( cg.foreground() ); 181 p->setPen( cg.foreground() );
185 p->setBrush( QBrush(cg.button(), NoBrush) ); 182 p->setBrush( QBrush(cg.button(), NoBrush) );
186 QColorGroup mycg( cg ); 183 QColorGroup mycg( cg );
187 if ( flags & Style_On ) { 184 if ( flags & Style_On ) {
188 QBrush fill = QBrush( cg.mid(), Dense4Pattern ); 185 QBrush fill = QBrush( cg.mid(), Dense4Pattern );
189 mycg.setBrush( QColorGroup::Button, fill ); 186 mycg.setBrush( QColorGroup::Button, fill );
190 } 187 }
191 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data ); 188 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data );
192 break; 189 break;
193 } 190 }
194 case CE_TabBarTab: 191 case CE_TabBarTab:
195 { 192 {
196 if ( !widget || !widget->parentWidget() ) 193 if ( !widget || !widget->parentWidget() )
197 break; 194 break;
198 195
199 const QTabBar *tb = (const QTabBar *) widget; 196 const QTabBar *tb = (const QTabBar *) widget;
200 bool selected = how & Style_Selected; 197 bool selected = how & Style_Selected;
201 198
202 QRect r2(r); 199 QRect r2(r);
203 if ( tb->shape() == QTabBar::RoundedAbove ) { 200 if ( tb->shape() == QTabBar::RoundedAbove ) {
204 p->setPen( cg.light() ); 201 p->setPen( cg.light() );
205 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() ); 202 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
206 if ( r2.left() == 0 ) 203 if ( r2.left() == 0 )
207 p->drawPoint( tb->rect().bottomLeft() ); 204 p->drawPoint( tb->rect().bottomLeft() );
208 else { 205 else {
209 p->setPen( cg.light() ); 206 p->setPen( cg.light() );
210 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() ); 207 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
211 } 208 }
212 209
213 if ( selected ) { 210 if ( selected ) {
214 p->setPen( cg.background() ); 211 p->setPen( cg.background() );
215 p->drawLine( r2.left()+2, r2.top()+1, r2.right()-2, r2.top()+1 ); 212 p->drawLine( r2.left()+2, r2.top()+1, r2.right()-2, r2.top()+1 );
216 p->fillRect( QRect( r2.left()+1, r2.top()+2, r2.width()-2, r2.height()-2), 213 p->fillRect( QRect( r2.left()+1, r2.top()+2, r2.width()-2, r2.height()-2),
217 cg.brush( QColorGroup::Background )); 214 cg.brush( QColorGroup::Background ));
218 } else { 215 } else {
219 r2.setRect( r2.left() + 2, r2.top() + 2, 216 r2.setRect( r2.left() + 2, r2.top() + 2,
220 r2.width() - 4, r2.height() - 2 ); 217 r2.width() - 4, r2.height() - 2 );
221 p->setPen( cg.button() ); 218 p->setPen( cg.button() );
222 p->drawLine( r2.left()+2, r2.top()+1, r2.right()-2, r2.top()+1 ); 219 p->drawLine( r2.left()+2, r2.top()+1, r2.right()-2, r2.top()+1 );
223 p->fillRect( QRect( r2.left()+1, r2.top()+2, r2.width()-2, r2.height()-3), 220 p->fillRect( QRect( r2.left()+1, r2.top()+2, r2.width()-2, r2.height()-3),
224 cg.brush( QColorGroup::Button )); 221 cg.brush( QColorGroup::Button ));
225 222
226 //do shading; will not work for pixmap brushes 223 //do shading; will not work for pixmap brushes
227 QColor bg = cg.button(); 224 QColor bg = cg.button();
228 // int h,s,v; 225 // int h,s,v;
229 // bg.hsv( &h, &s, &v ); 226 // bg.hsv( &h, &s, &v );
230 int n = r2.height()/2; 227 int n = r2.height()/2;
231 int dark = 100; 228 int dark = 100;
232 for ( int i = 1; i < n; i++ ) { 229 for ( int i = 1; i < n; i++ ) {
233 dark = (dark * (100+(i*15)/n) )/100; 230 dark = (dark * (100+(i*15)/n) )/100;
234 p->setPen( bg.dark( dark ) ); 231 p->setPen( bg.dark( dark ) );
235 int y = r2.bottom()-n+i; 232 int y = r2.bottom()-n+i;
236 int x1 = r2.left()+1; 233 int x1 = r2.left()+1;
237 int x2 = r2.right()-1; 234 int x2 = r2.right()-1;
238 p->drawLine( x1, y, x2, y ); 235 p->drawLine( x1, y, x2, y );
239 } 236 }
240 } 237 }
241 238
242 p->setPen( cg.light() ); 239 p->setPen( cg.light() );
243 p->drawLine( r2.left(), r2.bottom()-1, r2.left(), r2.top() + 2 ); 240 p->drawLine( r2.left(), r2.bottom()-1, r2.left(), r2.top() + 2 );
244 p->drawPoint( r2.left()+1, r2.top() + 1 ); 241 p->drawPoint( r2.left()+1, r2.top() + 1 );
245 p->drawLine( r2.left()+2, r2.top(), 242 p->drawLine( r2.left()+2, r2.top(),
246 r2.right() - 2, r2.top() ); 243 r2.right() - 2, r2.top() );
247 244
248 p->setPen( cg.dark() ); 245 p->setPen( cg.dark() );
249 p->drawPoint( r2.right() - 1, r2.top() + 1 ); 246 p->drawPoint( r2.right() - 1, r2.top() + 1 );
250 p->drawLine( r2.right(), r2.top() + 2, r2.right(), r2.bottom() - 1); 247 p->drawLine( r2.right(), r2.top() + 2, r2.right(), r2.bottom() - 1);
251 } else if ( tb->shape() == QTabBar::RoundedBelow ) { 248 } else if ( tb->shape() == QTabBar::RoundedBelow ) {
252 if ( selected ) { 249 if ( selected ) {
253 p->setPen( cg.background() ); 250 p->setPen( cg.background() );
254 p->drawLine( r2.left()+2, r2.bottom()-1, r2.right()-2, r2.bottom()-1 ); 251 p->drawLine( r2.left()+2, r2.bottom()-1, r2.right()-2, r2.bottom()-1 );
255 p->fillRect( QRect( r2.left()+1, r2.top(), r2.width()-2, r2.height()-2), 252 p->fillRect( QRect( r2.left()+1, r2.top(), r2.width()-2, r2.height()-2),
256 tb->palette().normal().brush( QColorGroup::Background )); 253 tb->palette().normal().brush( QColorGroup::Background ));
257 } else { 254 } else {
258 p->setPen( cg.dark() ); 255 p->setPen( cg.dark() );
259 p->drawLine( r2.left(), r2.top(), 256 p->drawLine( r2.left(), r2.top(),
260 r2.right(), r2.top() ); 257 r2.right(), r2.top() );
261 r2.setRect( r2.left() + 2, r2.top(), 258 r2.setRect( r2.left() + 2, r2.top(),
262 r2.width() - 4, r2.height() - 2 ); 259 r2.width() - 4, r2.height() - 2 );
263 p->setPen( cg.button() ); 260 p->setPen( cg.button() );
264 p->drawLine( r2.left()+2, r2.bottom()-1, r2.right()-2, r2.bottom()-1 ); 261 p->drawLine( r2.left()+2, r2.bottom()-1, r2.right()-2, r2.bottom()-1 );
265 p->fillRect( QRect( r2.left()+1, r2.top()+1, r2.width()-2, r2.height()-3), 262 p->fillRect( QRect( r2.left()+1, r2.top()+1, r2.width()-2, r2.height()-3),
266 tb->palette().normal().brush( QColorGroup::Button )); 263 tb->palette().normal().brush( QColorGroup::Button ));
267 } 264 }
268 265
269 p->setPen( cg.dark() ); 266 p->setPen( cg.dark() );
270 p->drawLine( r2.right(), r2.top(), 267 p->drawLine( r2.right(), r2.top(),
271 r2.right(), r2.bottom() - 2 ); 268 r2.right(), r2.bottom() - 2 );
272 p->drawPoint( r2.right() - 1, r2.bottom() - 1 ); 269 p->drawPoint( r2.right() - 1, r2.bottom() - 1 );
273 p->drawLine( r2.right() - 2, r2.bottom(), 270 p->drawLine( r2.right() - 2, r2.bottom(),
274 r2.left() + 2, r2.bottom() ); 271 r2.left() + 2, r2.bottom() );
275 272
276 p->setPen( cg.light() ); 273 p->setPen( cg.light() );
277 p->drawLine( r2.left(), r2.top()+1, 274 p->drawLine( r2.left(), r2.top()+1,
278 r2.left(), r2.bottom() - 2 ); 275 r2.left(), r2.bottom() - 2 );
279 p->drawPoint( r2.left() + 1, r2.bottom() - 1 ); 276 p->drawPoint( r2.left() + 1, r2.bottom() - 1 );
280 if ( r2.left() == 0 ) 277 if ( r2.left() == 0 )
281 p->drawPoint( tb->rect().topLeft() ); 278 p->drawPoint( tb->rect().topLeft() );
282 279
283 } else { 280 } else {
284 QCommonStyle::drawControl( ce, p, widget, r, cg, how, data ); 281 QCommonStyle::drawControl( ce, p, widget, r, cg, how, data );
285 } 282 }
286 break; 283 break;
287 } 284 }
288 default: 285 default:
289 QWindowsStyle::drawControl( ce, p, widget, r, cg, how, data ); 286 QWindowsStyle::drawControl( ce, p, widget, r, cg, how, data );
290 break; 287 break;
291 } 288 }
292} 289}
293 290
294void QPEStyle::drawComplexControl( ComplexControl control, QPainter *p, 291void QPEStyle::drawComplexControl( ComplexControl control, QPainter *p,
295 const QWidget *widget, const QRect &r, 292 const QWidget *widget, const QRect &r,
296 const QColorGroup &cg, SFlags how, 293 const QColorGroup &cg, SFlags how,
297 SCFlags sub, SCFlags subActive, const QStyleOption &data) const 294 SCFlags sub, SCFlags subActive, const QStyleOption &data) const
298{ 295{
299 switch ( control ) { 296 switch ( control ) {
300 case CC_ComboBox: 297 case CC_ComboBox:
301 if ( sub & SC_ComboBoxArrow ) { 298 if ( sub & SC_ComboBoxArrow ) {
302 SFlags flags = Style_Default; 299 SFlags flags = Style_Default;
303 300
304 drawPrimitive( PE_ButtonBevel, p, r, cg, flags, data ); 301 drawPrimitive( PE_ButtonBevel, p, r, cg, flags, data );
305 302
306 QRect ar = 303 QRect ar =
307 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, 304 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget,
308 SC_ComboBoxArrow ), widget ); 305 SC_ComboBoxArrow ), widget );
309 306
310 if ( subActive == SC_ComboBoxArrow ) { 307 if ( subActive == SC_ComboBoxArrow ) {
311 p->setPen( cg.dark() ); 308 p->setPen( cg.dark() );
312 p->setBrush( cg.brush( QColorGroup::Button ) ); 309 p->setBrush( cg.brush( QColorGroup::Button ) );
313 p->drawRect( ar ); 310 p->drawRect( ar );
314 } 311 }
315 312
316 ar.addCoords( 2, 2, -2, -2 ); 313 ar.addCoords( 2, 2, -2, -2 );
317 if ( widget->isEnabled() ) 314 if ( widget->isEnabled() )
318 flags |= Style_Enabled; 315 flags |= Style_Enabled;
319 316
320 if ( subActive & Style_Sunken ) { 317 if ( subActive & Style_Sunken ) {
321 flags |= Style_Sunken; 318 flags |= Style_Sunken;
322 } 319 }
323 drawPrimitive( PE_ArrowDown, p, ar, cg, flags ); 320 drawPrimitive( PE_ArrowDown, p, ar, cg, flags );
324 } 321 }
325 322
326 if ( sub & SC_ComboBoxEditField ) { 323 if ( sub & SC_ComboBoxEditField ) {
327 const QComboBox * cb = (const QComboBox *) widget; 324 const QComboBox * cb = (const QComboBox *) widget;
328 QRect re = 325 QRect re =
329 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, 326 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget,
330 SC_ComboBoxEditField ), widget ); 327 SC_ComboBoxEditField ), widget );
331 if ( cb->hasFocus() && !cb->editable() ) 328 if ( cb->hasFocus() && !cb->editable() )
332 p->fillRect( re.x(), re.y(), re.width(), re.height(), 329 p->fillRect( re.x(), re.y(), re.width(), re.height(),
333 cg.brush( QColorGroup::Highlight ) ); 330 cg.brush( QColorGroup::Highlight ) );
334 331
335 if ( cb->hasFocus() ) { 332 if ( cb->hasFocus() ) {
336 p->setPen( cg.highlightedText() ); 333 p->setPen( cg.highlightedText() );
337 p->setBackgroundColor( cg.highlight() ); 334 p->setBackgroundColor( cg.highlight() );
338 335
339 } else { 336 } else {
340 p->setPen( cg.text() ); 337 p->setPen( cg.text() );
341 p->setBackgroundColor( cg.background() ); 338 p->setBackgroundColor( cg.background() );
342 } 339 }
343 340
344 if ( cb->hasFocus() && !cb->editable() ) { 341 if ( cb->hasFocus() && !cb->editable() ) {
345 QRect re = 342 QRect re =
346 QStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), widget ); 343 QStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), widget );
347 drawPrimitive( PE_FocusRect, p, re, cg, Style_FocusAtBorder, QStyleOption(cg.highlight())); 344 drawPrimitive( PE_FocusRect, p, re, cg, Style_FocusAtBorder, QStyleOption(cg.highlight()));
348 } 345 }
349 } 346 }
350 break; 347 break;
351 default: 348 default:
352 QWindowsStyle::drawComplexControl( control, p, widget, r, cg, how, 349 QWindowsStyle::drawComplexControl( control, p, widget, r, cg, how,
353 sub, subActive, data ); 350 sub, subActive, data );
354 break; 351 break;
355 } 352 }
356} 353}
357 354
358int QPEStyle::pixelMetric( PixelMetric metric, const QWidget *widget ) const 355int QPEStyle::pixelMetric( PixelMetric metric, const QWidget *widget ) const
359{ 356{
360 int ret; 357 int ret;
361 switch( metric ) { 358 switch( metric ) {
362 case PM_ButtonMargin: 359 case PM_ButtonMargin:
363 ret = 2; 360 ret = 2;
364 break; 361 break;
365 case PM_DefaultFrameWidth: 362 case PM_DefaultFrameWidth:
366 ret = 1; 363 ret = 1;
367 break; 364 break;
368 case PM_ButtonDefaultIndicator: 365 case PM_ButtonDefaultIndicator:
369 ret = 2; 366 ret = 2;
370 break; 367 break;
371 case PM_ButtonShiftHorizontal: 368 case PM_ButtonShiftHorizontal:
372 case PM_ButtonShiftVertical: 369 case PM_ButtonShiftVertical:
373 ret = -1; 370 ret = -1;
374 break; 371 break;
375 case PM_IndicatorWidth: 372 case PM_IndicatorWidth:
376 ret = 15; 373 ret = 15;
377 break; 374 break;
378 case PM_IndicatorHeight: 375 case PM_IndicatorHeight:
379 ret = 13; 376 ret = 13;
380 break; 377 break;
381 case PM_ExclusiveIndicatorHeight: 378 case PM_ExclusiveIndicatorHeight:
382 case PM_ExclusiveIndicatorWidth: 379 case PM_ExclusiveIndicatorWidth:
383 ret = 15; 380 ret = 15;
384 break; 381 break;
385 case PM_ScrollBarExtent: 382 case PM_ScrollBarExtent:
386 ret = 13; 383 ret = 13;
387 break; 384 break;
388 case PM_SliderLength: 385 case PM_SliderLength:
389 ret = 12; 386 ret = 12;
390 break; 387 break;
391 default: 388 default:
392 ret = QWindowsStyle::pixelMetric( metric, widget ); 389 ret = QWindowsStyle::pixelMetric( metric, widget );
393 break; 390 break;
394 } 391 }
395 return ret; 392 return ret;
396} 393}
397 394
398QSize QPEStyle::sizeFromContents( ContentsType contents, const QWidget *widget, 395QSize QPEStyle::sizeFromContents( ContentsType contents, const QWidget *widget,
399 const QSize &contentsSize, const QStyleOption &data) const 396 const QSize &contentsSize, const QStyleOption &data) const
400{ 397{
401 QSize sz(contentsSize); 398 QSize sz(contentsSize);
402 399
403 switch ( contents ) { 400 switch ( contents ) {
404 case CT_PopupMenuItem: 401 case CT_PopupMenuItem:
405 { 402 {
406 if ( !widget || data.isDefault() ) 403 if ( !widget || data.isDefault() )
407 break; 404 break;
408 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data ); 405 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data );
409 sz = QSize( sz.width(), sz.height()-2 ); 406 sz = QSize( sz.width(), sz.height()-2 );