summaryrefslogtreecommitdiff
path: root/library/qpestyle.cpp
authorar <ar>2005-01-21 19:56:15 (UTC)
committer ar <ar>2005-01-21 19:56:15 (UTC)
commitcd51d382be50bc021739395309e23760f1619759 (patch) (unidiff)
treee76155f772df7faea5fcf38667c6da8c916208db /library/qpestyle.cpp
parentfdc37fbd908472e28735a8f0b01e3e66a43535e0 (diff)
downloadopie-cd51d382be50bc021739395309e23760f1619759.zip
opie-cd51d382be50bc021739395309e23760f1619759.tar.gz
opie-cd51d382be50bc021739395309e23760f1619759.tar.bz2
- make opie compilable against qte 2.3.10 snapshot
check QT_VERSION against 0x030000 instead of 300
Diffstat (limited to 'library/qpestyle.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpestyle.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/qpestyle.cpp b/library/qpestyle.cpp
index b61ada4..0566f6b 100644
--- a/library/qpestyle.cpp
+++ b/library/qpestyle.cpp
@@ -1,688 +1,688 @@
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 22
23 23
24#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) 24#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
25 25
26#if QT_VERSION >= 300 26#if QT_VERSION >= 0x030000
27 27
28#include <qdrawutil.h> 28#include <qdrawutil.h>
29#include <qcombobox.h> 29#include <qcombobox.h>
30#include <qtabbar.h> 30#include <qtabbar.h>
31 31
32QPEStyle::QPEStyle() 32QPEStyle::QPEStyle()
33{ 33{
34} 34}
35 35
36QPEStyle::~QPEStyle() 36QPEStyle::~QPEStyle()
37{ 37{
38} 38}
39 39
40void QPEStyle::drawPrimitive( PrimitiveElement pe, QPainter *p, const QRect &r, 40void QPEStyle::drawPrimitive( PrimitiveElement pe, QPainter *p, const QRect &r,
41 const QColorGroup &cg, SFlags flags, const QStyleOption &data) const 41 const QColorGroup &cg, SFlags flags, const QStyleOption &data) const
42{ 42{
43 switch ( pe ) { 43 switch ( pe ) {
44 case PE_ButtonTool: 44 case PE_ButtonTool:
45 { 45 {
46 QColorGroup mycg = cg; 46 QColorGroup mycg = cg;
47 if ( flags & Style_On ) { 47 if ( flags & Style_On ) {
48 QBrush fill( cg.mid(), Dense4Pattern ); 48 QBrush fill( cg.mid(), Dense4Pattern );
49 mycg.setBrush( QColorGroup::Button, fill ); 49 mycg.setBrush( QColorGroup::Button, fill );
50 } 50 }
51 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data ); 51 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data );
52 break; 52 break;
53 } 53 }
54 case PE_ButtonCommand: 54 case PE_ButtonCommand:
55 case PE_ButtonDefault: 55 case PE_ButtonDefault:
56 case PE_ButtonBevel: 56 case PE_ButtonBevel:
57 case PE_HeaderSection: 57 case PE_HeaderSection:
58 { 58 {
59 QPen oldPen = p->pen(); 59 QPen oldPen = p->pen();
60 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) );
61 61
62 int x2 = r.right(); 62 int x2 = r.right();
63 int y2 = r.bottom(); 63 int y2 = r.bottom();
64 64
65 if ( flags & (Style_Sunken | Style_Down | Style_On) ) 65 if ( flags & (Style_Sunken | Style_Down | Style_On) )
66 p->setPen( cg.dark() ); 66 p->setPen( cg.dark() );
67 else 67 else
68 p->setPen( cg.light() ); 68 p->setPen( cg.light() );
69 p->drawLine( r.x(), r.y()+1, r.x(), y2-1 ); 69 p->drawLine( r.x(), r.y()+1, r.x(), y2-1 );
70 p->drawLine( r.x()+1, r.y(), x2-1, r.y() ); 70 p->drawLine( r.x()+1, r.y(), x2-1, r.y() );
71 71
72 if ( flags & (Style_Sunken | Style_Down | Style_On) ) 72 if ( flags & (Style_Sunken | Style_Down | Style_On) )
73 p->setPen( cg.light() ); 73 p->setPen( cg.light() );
74 else 74 else
75 p->setPen( cg.dark() ); 75 p->setPen( cg.dark() );
76 p->drawLine( x2, r.y()+1, x2, y2-1 ); 76 p->drawLine( x2, r.y()+1, x2, y2-1 );
77 p->drawLine( r.x()+1, y2, x2-1, y2 ); 77 p->drawLine( r.x()+1, y2, x2-1, y2 );
78 p->setPen( oldPen ); 78 p->setPen( oldPen );
79 break; 79 break;
80 } 80 }
81 case PE_FocusRect: 81 case PE_FocusRect:
82 break; 82 break;
83 case PE_Indicator: 83 case PE_Indicator:
84 { 84 {
85 QColorGroup mycg( cg ); 85 QColorGroup mycg( cg );
86 QBrush fill; 86 QBrush fill;
87 if ( flags & Style_Down ) 87 if ( flags & Style_Down )
88 fill = cg.brush( QColorGroup::Button ); 88 fill = cg.brush( QColorGroup::Button );
89 else 89 else
90 fill = cg.brush( (flags&Style_Enabled) ? QColorGroup::Base : QColorGroup::Background ); 90 fill = cg.brush( (flags&Style_Enabled) ? QColorGroup::Base : QColorGroup::Background );
91 mycg.setBrush( QColorGroup::Button, fill ); 91 mycg.setBrush( QColorGroup::Button, fill );
92 if ( flags&Style_Enabled ) 92 if ( flags&Style_Enabled )
93 flags |= Style_Sunken; 93 flags |= Style_Sunken;
94 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags ); 94 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags );
95 if ( flags & Style_On ) { 95 if ( flags & Style_On ) {
96 QPointArray a( 7*2 ); 96 QPointArray a( 7*2 );
97 int i, xx, yy; 97 int i, xx, yy;
98 xx = r.x()+3; 98 xx = r.x()+3;
99 yy = r.y()+5; 99 yy = r.y()+5;
100 for ( i=0; i<3; i++ ) { 100 for ( i=0; i<3; i++ ) {
101 a.setPoint( 2*i, xx, yy ); 101 a.setPoint( 2*i, xx, yy );
102 a.setPoint( 2*i+1, xx, yy+2 ); 102 a.setPoint( 2*i+1, xx, yy+2 );
103 xx++; yy++; 103 xx++; yy++;
104 } 104 }
105 yy -= 2; 105 yy -= 2;
106 for ( i=3; i<7; i++ ) { 106 for ( i=3; i<7; i++ ) {
107 a.setPoint( 2*i, xx, yy ); 107 a.setPoint( 2*i, xx, yy );
108 a.setPoint( 2*i+1, xx, yy+2 ); 108 a.setPoint( 2*i+1, xx, yy+2 );
109 xx++; yy--; 109 xx++; yy--;
110 } 110 }
111 if ( flags & Style_NoChange ) { 111 if ( flags & Style_NoChange ) {
112 p->setPen( mycg.dark() ); 112 p->setPen( mycg.dark() );
113 } else { 113 } else {
114 p->setPen( mycg.text() ); 114 p->setPen( mycg.text() );
115 } 115 }
116 p->drawLineSegments( a ); 116 p->drawLineSegments( a );
117 } 117 }
118 break; 118 break;
119 } 119 }
120 case PE_ExclusiveIndicator: 120 case PE_ExclusiveIndicator:
121 { 121 {
122 static const QCOORD pts1[] = { // dark lines 122 static const QCOORD pts1[] = { // dark lines
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 }; 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 };
124 static const QCOORD pts4[] = { // white lines 124 static const QCOORD pts4[] = { // white lines
125 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,
126 11,4, 10,3, 10,2 }; 126 11,4, 10,3, 10,2 };
127 static const QCOORD pts5[] = { // inner fill 127 static const QCOORD pts5[] = { // inner fill
128 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 };
129 129
130 int x, y, w, h; 130 int x, y, w, h;
131 r.rect( &x, &y, &w, &h ); 131 r.rect( &x, &y, &w, &h );
132 p->eraseRect( x, y, w, h ); 132 p->eraseRect( x, y, w, h );
133 QPointArray a( QCOORDARRLEN(pts1), pts1 ); 133 QPointArray a( QCOORDARRLEN(pts1), pts1 );
134 a.translate( x, y ); 134 a.translate( x, y );
135 p->setPen( cg.dark() ); 135 p->setPen( cg.dark() );
136 p->drawPolyline( a ); 136 p->drawPolyline( a );
137 a.setPoints( QCOORDARRLEN(pts4), pts4 ); 137 a.setPoints( QCOORDARRLEN(pts4), pts4 );
138 a.translate( x, y ); 138 a.translate( x, y );
139 p->setPen( cg.light() ); 139 p->setPen( cg.light() );
140 p->drawPolyline( a ); 140 p->drawPolyline( a );
141 a.setPoints( QCOORDARRLEN(pts5), pts5 ); 141 a.setPoints( QCOORDARRLEN(pts5), pts5 );
142 a.translate( x, y ); 142 a.translate( x, y );
143 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();
144 p->setPen( fillColor ); 144 p->setPen( fillColor );
145 p->setBrush( fillColor ) ; 145 p->setBrush( fillColor ) ;
146 p->drawPolygon( a ); 146 p->drawPolygon( a );
147 if ( flags&Style_On ) { 147 if ( flags&Style_On ) {
148 p->setPen( NoPen ); 148 p->setPen( NoPen );
149 p->setBrush( cg.text() ); 149 p->setBrush( cg.text() );
150 p->drawRect( x+5, y+4, 2, 4 ); 150 p->drawRect( x+5, y+4, 2, 4 );
151 p->drawRect( x+4, y+5, 4, 2 ); 151 p->drawRect( x+4, y+5, 4, 2 );
152 } 152 }
153 break; 153 break;
154 } 154 }
155 default: 155 default:
156 QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, data ); 156 QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, data );
157 break; 157 break;
158 } 158 }
159} 159}
160 160
161void QPEStyle::drawControl( ControlElement ce, QPainter *p, 161void QPEStyle::drawControl( ControlElement ce, QPainter *p,
162 const QWidget *widget, const QRect &r, 162 const QWidget *widget, const QRect &r,
163 const QColorGroup &cg, SFlags how, const QStyleOption &data) const 163 const QColorGroup &cg, SFlags how, const QStyleOption &data) const
164{ 164{
165 switch ( ce ) { 165 switch ( ce ) {
166 case CE_PushButton: 166 case CE_PushButton:
167 { 167 {
168 const QPushButton *btn = (QPushButton*)widget; 168 const QPushButton *btn = (QPushButton*)widget;
169 SFlags flags; 169 SFlags flags;
170 flags = Style_Default; 170 flags = Style_Default;
171 if ( btn->isDown() ) 171 if ( btn->isDown() )
172 flags |= Style_Down; 172 flags |= Style_Down;
173 if ( btn->isOn() ) 173 if ( btn->isOn() )
174 flags |= Style_On; 174 flags |= Style_On;
175 if ( btn->isEnabled() ) 175 if ( btn->isEnabled() )
176 flags |= Style_Enabled; 176 flags |= Style_Enabled;
177 if ( btn->isDefault() ) 177 if ( btn->isDefault() )
178 flags |= Style_Default; 178 flags |= Style_Default;
179 if (! btn->isFlat() && !(flags & Style_Down)) 179 if (! btn->isFlat() && !(flags & Style_Down))
180 flags |= Style_Raised; 180 flags |= Style_Raised;
181 p->setPen( cg.foreground() ); 181 p->setPen( cg.foreground() );
182 p->setBrush( QBrush(cg.button(), NoBrush) ); 182 p->setBrush( QBrush(cg.button(), NoBrush) );
183 QColorGroup mycg( cg ); 183 QColorGroup mycg( cg );
184 if ( flags & Style_On ) { 184 if ( flags & Style_On ) {
185 QBrush fill = QBrush( cg.mid(), Dense4Pattern ); 185 QBrush fill = QBrush( cg.mid(), Dense4Pattern );
186 mycg.setBrush( QColorGroup::Button, fill ); 186 mycg.setBrush( QColorGroup::Button, fill );
187 } 187 }
188 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data ); 188 drawPrimitive( PE_ButtonBevel, p, r, mycg, flags, data );
189 break; 189 break;
190 } 190 }
191 case CE_TabBarTab: 191 case CE_TabBarTab:
192 { 192 {
193 if ( !widget || !widget->parentWidget() ) 193 if ( !widget || !widget->parentWidget() )
194 break; 194 break;
195 195
196 const QTabBar *tb = (const QTabBar *) widget; 196 const QTabBar *tb = (const QTabBar *) widget;
197 bool selected = how & Style_Selected; 197 bool selected = how & Style_Selected;
198 198
199 QRect r2(r); 199 QRect r2(r);
200 if ( tb->shape() == QTabBar::RoundedAbove ) { 200 if ( tb->shape() == QTabBar::RoundedAbove ) {
201 p->setPen( cg.light() ); 201 p->setPen( cg.light() );
202 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() ); 202 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
203 if ( r2.left() == 0 ) 203 if ( r2.left() == 0 )
204 p->drawPoint( tb->rect().bottomLeft() ); 204 p->drawPoint( tb->rect().bottomLeft() );
205 else { 205 else {
206 p->setPen( cg.light() ); 206 p->setPen( cg.light() );
207 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() ); 207 p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
208 } 208 }
209 209
210 if ( selected ) { 210 if ( selected ) {
211 p->setPen( cg.background() ); 211 p->setPen( cg.background() );
212 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 );
213 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),
214 cg.brush( QColorGroup::Background )); 214 cg.brush( QColorGroup::Background ));
215 } else { 215 } else {
216 r2.setRect( r2.left() + 2, r2.top() + 2, 216 r2.setRect( r2.left() + 2, r2.top() + 2,
217 r2.width() - 4, r2.height() - 2 ); 217 r2.width() - 4, r2.height() - 2 );
218 p->setPen( cg.button() ); 218 p->setPen( cg.button() );
219 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 );
220 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),
221 cg.brush( QColorGroup::Button )); 221 cg.brush( QColorGroup::Button ));
222 222
223 //do shading; will not work for pixmap brushes 223 //do shading; will not work for pixmap brushes
224 QColor bg = cg.button(); 224 QColor bg = cg.button();
225 // int h,s,v; 225 // int h,s,v;
226 // bg.hsv( &h, &s, &v ); 226 // bg.hsv( &h, &s, &v );
227 int n = r2.height()/2; 227 int n = r2.height()/2;
228 int dark = 100; 228 int dark = 100;
229 for ( int i = 1; i < n; i++ ) { 229 for ( int i = 1; i < n; i++ ) {
230 dark = (dark * (100+(i*15)/n) )/100; 230 dark = (dark * (100+(i*15)/n) )/100;
231 p->setPen( bg.dark( dark ) ); 231 p->setPen( bg.dark( dark ) );
232 int y = r2.bottom()-n+i; 232 int y = r2.bottom()-n+i;
233 int x1 = r2.left()+1; 233 int x1 = r2.left()+1;
234 int x2 = r2.right()-1; 234 int x2 = r2.right()-1;
235 p->drawLine( x1, y, x2, y ); 235 p->drawLine( x1, y, x2, y );
236 } 236 }
237 } 237 }
238 238
239 p->setPen( cg.light() ); 239 p->setPen( cg.light() );
240 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 );
241 p->drawPoint( r2.left()+1, r2.top() + 1 ); 241 p->drawPoint( r2.left()+1, r2.top() + 1 );
242 p->drawLine( r2.left()+2, r2.top(), 242 p->drawLine( r2.left()+2, r2.top(),
243 r2.right() - 2, r2.top() ); 243 r2.right() - 2, r2.top() );
244 244
245 p->setPen( cg.dark() ); 245 p->setPen( cg.dark() );
246 p->drawPoint( r2.right() - 1, r2.top() + 1 ); 246 p->drawPoint( r2.right() - 1, r2.top() + 1 );
247 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);
248 } else if ( tb->shape() == QTabBar::RoundedBelow ) { 248 } else if ( tb->shape() == QTabBar::RoundedBelow ) {
249 if ( selected ) { 249 if ( selected ) {
250 p->setPen( cg.background() ); 250 p->setPen( cg.background() );
251 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 );
252 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),
253 tb->palette().normal().brush( QColorGroup::Background )); 253 tb->palette().normal().brush( QColorGroup::Background ));
254 } else { 254 } else {
255 p->setPen( cg.dark() ); 255 p->setPen( cg.dark() );
256 p->drawLine( r2.left(), r2.top(), 256 p->drawLine( r2.left(), r2.top(),
257 r2.right(), r2.top() ); 257 r2.right(), r2.top() );
258 r2.setRect( r2.left() + 2, r2.top(), 258 r2.setRect( r2.left() + 2, r2.top(),
259 r2.width() - 4, r2.height() - 2 ); 259 r2.width() - 4, r2.height() - 2 );
260 p->setPen( cg.button() ); 260 p->setPen( cg.button() );
261 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 );
262 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),
263 tb->palette().normal().brush( QColorGroup::Button )); 263 tb->palette().normal().brush( QColorGroup::Button ));
264 } 264 }
265 265
266 p->setPen( cg.dark() ); 266 p->setPen( cg.dark() );
267 p->drawLine( r2.right(), r2.top(), 267 p->drawLine( r2.right(), r2.top(),
268 r2.right(), r2.bottom() - 2 ); 268 r2.right(), r2.bottom() - 2 );
269 p->drawPoint( r2.right() - 1, r2.bottom() - 1 ); 269 p->drawPoint( r2.right() - 1, r2.bottom() - 1 );
270 p->drawLine( r2.right() - 2, r2.bottom(), 270 p->drawLine( r2.right() - 2, r2.bottom(),
271 r2.left() + 2, r2.bottom() ); 271 r2.left() + 2, r2.bottom() );
272 272
273 p->setPen( cg.light() ); 273 p->setPen( cg.light() );
274 p->drawLine( r2.left(), r2.top()+1, 274 p->drawLine( r2.left(), r2.top()+1,
275 r2.left(), r2.bottom() - 2 ); 275 r2.left(), r2.bottom() - 2 );
276 p->drawPoint( r2.left() + 1, r2.bottom() - 1 ); 276 p->drawPoint( r2.left() + 1, r2.bottom() - 1 );
277 if ( r2.left() == 0 ) 277 if ( r2.left() == 0 )
278 p->drawPoint( tb->rect().topLeft() ); 278 p->drawPoint( tb->rect().topLeft() );
279 279
280 } else { 280 } else {
281 QCommonStyle::drawControl( ce, p, widget, r, cg, how, data ); 281 QCommonStyle::drawControl( ce, p, widget, r, cg, how, data );
282 } 282 }
283 break; 283 break;
284 } 284 }
285 default: 285 default:
286 QWindowsStyle::drawControl( ce, p, widget, r, cg, how, data ); 286 QWindowsStyle::drawControl( ce, p, widget, r, cg, how, data );
287 break; 287 break;
288 } 288 }
289} 289}
290 290
291void QPEStyle::drawComplexControl( ComplexControl control, QPainter *p, 291void QPEStyle::drawComplexControl( ComplexControl control, QPainter *p,
292 const QWidget *widget, const QRect &r, 292 const QWidget *widget, const QRect &r,
293 const QColorGroup &cg, SFlags how, 293 const QColorGroup &cg, SFlags how,
294 SCFlags sub, SCFlags subActive, const QStyleOption &data) const 294 SCFlags sub, SCFlags subActive, const QStyleOption &data) const
295{ 295{
296 switch ( control ) { 296 switch ( control ) {
297 case CC_ComboBox: 297 case CC_ComboBox:
298 if ( sub & SC_ComboBoxArrow ) { 298 if ( sub & SC_ComboBoxArrow ) {
299 SFlags flags = Style_Default; 299 SFlags flags = Style_Default;
300 300
301 drawPrimitive( PE_ButtonBevel, p, r, cg, flags, data ); 301 drawPrimitive( PE_ButtonBevel, p, r, cg, flags, data );
302 302
303 QRect ar = 303 QRect ar =
304 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, 304 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget,
305 SC_ComboBoxArrow ), widget ); 305 SC_ComboBoxArrow ), widget );
306 306
307 if ( subActive == SC_ComboBoxArrow ) { 307 if ( subActive == SC_ComboBoxArrow ) {
308 p->setPen( cg.dark() ); 308 p->setPen( cg.dark() );
309 p->setBrush( cg.brush( QColorGroup::Button ) ); 309 p->setBrush( cg.brush( QColorGroup::Button ) );
310 p->drawRect( ar ); 310 p->drawRect( ar );
311 } 311 }
312 312
313 ar.addCoords( 2, 2, -2, -2 ); 313 ar.addCoords( 2, 2, -2, -2 );
314 if ( widget->isEnabled() ) 314 if ( widget->isEnabled() )
315 flags |= Style_Enabled; 315 flags |= Style_Enabled;
316 316
317 if ( subActive & Style_Sunken ) { 317 if ( subActive & Style_Sunken ) {
318 flags |= Style_Sunken; 318 flags |= Style_Sunken;
319 } 319 }
320 drawPrimitive( PE_ArrowDown, p, ar, cg, flags ); 320 drawPrimitive( PE_ArrowDown, p, ar, cg, flags );
321 } 321 }
322 322
323 if ( sub & SC_ComboBoxEditField ) { 323 if ( sub & SC_ComboBoxEditField ) {
324 const QComboBox * cb = (const QComboBox *) widget; 324 const QComboBox * cb = (const QComboBox *) widget;
325 QRect re = 325 QRect re =
326 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, 326 QStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget,
327 SC_ComboBoxEditField ), widget ); 327 SC_ComboBoxEditField ), widget );
328 if ( cb->hasFocus() && !cb->editable() ) 328 if ( cb->hasFocus() && !cb->editable() )
329 p->fillRect( re.x(), re.y(), re.width(), re.height(), 329 p->fillRect( re.x(), re.y(), re.width(), re.height(),
330 cg.brush( QColorGroup::Highlight ) ); 330 cg.brush( QColorGroup::Highlight ) );
331 331
332 if ( cb->hasFocus() ) { 332 if ( cb->hasFocus() ) {
333 p->setPen( cg.highlightedText() ); 333 p->setPen( cg.highlightedText() );
334 p->setBackgroundColor( cg.highlight() ); 334 p->setBackgroundColor( cg.highlight() );
335 335
336 } else { 336 } else {
337 p->setPen( cg.text() ); 337 p->setPen( cg.text() );
338 p->setBackgroundColor( cg.background() ); 338 p->setBackgroundColor( cg.background() );
339 } 339 }
340 340
341 if ( cb->hasFocus() && !cb->editable() ) { 341 if ( cb->hasFocus() && !cb->editable() ) {
342 QRect re = 342 QRect re =
343 QStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), widget ); 343 QStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), widget );
344 drawPrimitive( PE_FocusRect, p, re, cg, Style_FocusAtBorder, QStyleOption(cg.highlight())); 344 drawPrimitive( PE_FocusRect, p, re, cg, Style_FocusAtBorder, QStyleOption(cg.highlight()));
345 } 345 }
346 } 346 }
347 break; 347 break;
348 default: 348 default:
349 QWindowsStyle::drawComplexControl( control, p, widget, r, cg, how, 349 QWindowsStyle::drawComplexControl( control, p, widget, r, cg, how,
350 sub, subActive, data ); 350 sub, subActive, data );
351 break; 351 break;
352 } 352 }
353} 353}
354 354
355int QPEStyle::pixelMetric( PixelMetric metric, const QWidget *widget ) const 355int QPEStyle::pixelMetric( PixelMetric metric, const QWidget *widget ) const
356{ 356{
357 int ret; 357 int ret;
358 switch( metric ) { 358 switch( metric ) {
359 case PM_ButtonMargin: 359 case PM_ButtonMargin:
360 ret = 2; 360 ret = 2;
361 break; 361 break;
362 case PM_DefaultFrameWidth: 362 case PM_DefaultFrameWidth:
363 ret = 1; 363 ret = 1;
364 break; 364 break;
365 case PM_ButtonDefaultIndicator: 365 case PM_ButtonDefaultIndicator:
366 ret = 2; 366 ret = 2;
367 break; 367 break;
368 case PM_ButtonShiftHorizontal: 368 case PM_ButtonShiftHorizontal:
369 case PM_ButtonShiftVertical: 369 case PM_ButtonShiftVertical:
370 ret = -1; 370 ret = -1;
371 break; 371 break;
372 case PM_IndicatorWidth: 372 case PM_IndicatorWidth:
373 ret = 15; 373 ret = 15;
374 break; 374 break;
375 case PM_IndicatorHeight: 375 case PM_IndicatorHeight:
376 ret = 13; 376 ret = 13;
377 break; 377 break;
378 case PM_ExclusiveIndicatorHeight: 378 case PM_ExclusiveIndicatorHeight:
379 case PM_ExclusiveIndicatorWidth: 379 case PM_ExclusiveIndicatorWidth:
380 ret = 15; 380 ret = 15;
381 break; 381 break;
382 case PM_ScrollBarExtent: 382 case PM_ScrollBarExtent:
383 ret = 13; 383 ret = 13;
384 break; 384 break;
385 case PM_SliderLength: 385 case PM_SliderLength:
386 ret = 12; 386 ret = 12;
387 break; 387 break;
388 default: 388 default:
389 ret = QWindowsStyle::pixelMetric( metric, widget ); 389 ret = QWindowsStyle::pixelMetric( metric, widget );
390 break; 390 break;
391 } 391 }
392 return ret; 392 return ret;
393} 393}
394 394
395QSize QPEStyle::sizeFromContents( ContentsType contents, const QWidget *widget, 395QSize QPEStyle::sizeFromContents( ContentsType contents, const QWidget *widget,
396 const QSize &contentsSize, const QStyleOption &data) const 396 const QSize &contentsSize, const QStyleOption &data) const
397{ 397{
398 QSize sz(contentsSize); 398 QSize sz(contentsSize);
399 399
400 switch ( contents ) { 400 switch ( contents ) {
401 case CT_PopupMenuItem: 401 case CT_PopupMenuItem:
402 { 402 {
403 if ( !widget || data.isDefault() ) 403 if ( !widget || data.isDefault() )
404 break; 404 break;
405 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data ); 405 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data );
406 sz = QSize( sz.width(), sz.height()-2 ); 406 sz = QSize( sz.width(), sz.height()-2 );
407 break; 407 break;
408 } 408 }
409 default: 409 default:
410 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data ); 410 sz = QWindowsStyle::sizeFromContents( contents, widget, contentsSize, data );
411 break; 411 break;
412 } 412 }
413 413
414 return sz; 414 return sz;
415} 415}
416 416
417#else 417#else
418 418
419#include <qfontmetrics.h> 419#include <qfontmetrics.h>
420#include <qpalette.h> 420#include <qpalette.h>
421#include <qdrawutil.h> 421#include <qdrawutil.h>
422#include <qscrollbar.h> 422#include <qscrollbar.h>
423#include <qbutton.h> 423#include <qbutton.h>
424#include <qframe.h> 424#include <qframe.h>
425#include <qtabbar.h> 425#include <qtabbar.h>
426 426
427#define INCLUDE_MENUITEM_DEF 427#define INCLUDE_MENUITEM_DEF
428#include <qmenudata.h> 428#include <qmenudata.h>
429 429
430QPEStyle::QPEStyle() 430QPEStyle::QPEStyle()
431{ 431{
432#if QT_VERSION < 300 432#if QT_VERSION < 0x030000
433 setButtonMargin(buttonMargin()); 433 setButtonMargin(buttonMargin());
434 setScrollBarExtent(scrollBarExtent().width(),scrollBarExtent().height()); 434 setScrollBarExtent(scrollBarExtent().width(),scrollBarExtent().height());
435#endif 435#endif
436} 436}
437 437
438QPEStyle::~QPEStyle() 438QPEStyle::~QPEStyle()
439{ 439{
440} 440}
441 441
442int QPEStyle::buttonMargin() const 442int QPEStyle::buttonMargin() const
443{ 443{
444 return 2; 444 return 2;
445} 445}
446 446
447QSize QPEStyle::scrollBarExtent() const 447QSize QPEStyle::scrollBarExtent() const
448{ 448{
449 return QSize(13,13); 449 return QSize(13,13);
450} 450}
451 451
452void QPEStyle::polish ( QPalette & ) 452void QPEStyle::polish ( QPalette & )
453{ 453{
454} 454}
455 455
456void QPEStyle::polish( QWidget *w ) 456void QPEStyle::polish( QWidget *w )
457{ 457{
458 if ( w->inherits( "QListBox" ) || 458 if ( w->inherits( "QListBox" ) ||
459 w->inherits( "QListView" ) || 459 w->inherits( "QListView" ) ||
460 w->inherits( "QPopupMenu" ) || 460 w->inherits( "QPopupMenu" ) ||
461 w->inherits( "QSpinBox" ) ) { 461 w->inherits( "QSpinBox" ) ) {
462 QFrame *f = (QFrame *)w; 462 QFrame *f = (QFrame *)w;
463 f->setFrameShape( QFrame::StyledPanel ); 463 f->setFrameShape( QFrame::StyledPanel );
464 f->setLineWidth( 1 ); 464 f->setLineWidth( 1 );
465 } 465 }
466} 466}
467 467
468void QPEStyle::unPolish( QWidget *w ) 468void QPEStyle::unPolish( QWidget *w )
469{ 469{
470 if ( w->inherits( "QListBox" ) || 470 if ( w->inherits( "QListBox" ) ||
471 w->inherits( "QListView" ) || 471 w->inherits( "QListView" ) ||
472 w->inherits( "QPopupMenu" ) || 472 w->inherits( "QPopupMenu" ) ||
473 w->inherits( "QSpinBox" ) ) { 473 w->inherits( "QSpinBox" ) ) {
474 QFrame *f = (QFrame *)w; 474 QFrame *f = (QFrame *)w;
475 f->setFrameShape( QFrame::StyledPanel ); 475 f->setFrameShape( QFrame::StyledPanel );
476 f->setLineWidth( 2 ); 476 f->setLineWidth( 2 );
477 } 477 }
478} 478}
479 479
480int QPEStyle::defaultFrameWidth() const 480int QPEStyle::defaultFrameWidth() const
481{ 481{
482 return 1; 482 return 1;
483} 483}
484 484
485void QPEStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, 485void QPEStyle::drawPanel ( QPainter * p, int x, int y, int w, int h,
486 const QColorGroup &g, bool sunken, int lineWidth, const QBrush * fill ) 486 const QColorGroup &g, bool sunken, int lineWidth, const QBrush * fill )
487{ 487{
488 qDrawShadePanel( p, QRect(x, y, w, h), g, sunken, lineWidth, fill ); 488 qDrawShadePanel( p, QRect(x, y, w, h), g, sunken, lineWidth, fill );
489} 489}
490 490
491void QPEStyle::drawButton( QPainter *p, int x, int y, int w, int h, 491void QPEStyle::drawButton( QPainter *p, int x, int y, int w, int h,
492 const QColorGroup &g, bool sunken, const QBrush* fill ) 492 const QColorGroup &g, bool sunken, const QBrush* fill )
493{ 493{
494 QPen oldPen = p->pen(); 494 QPen oldPen = p->pen();
495 if ( sunken ) 495 if ( sunken )
496 p->setPen( g.dark() ); 496 p->setPen( g.dark() );
497 else 497 else
498 p->setPen( g.light() ); 498 p->setPen( g.light() );
499 499
500 int x2 = x+w-1; 500 int x2 = x+w-1;
501 int y2 = y+h-1; 501 int y2 = y+h-1;
502 502
503 p->drawLine( x, y, x, y2 ); 503 p->drawLine( x, y, x, y2 );
504 p->drawLine( x, y, x2, y ); 504 p->drawLine( x, y, x2, y );
505 505
506 if ( sunken ) 506 if ( sunken )
507 p->setPen( g.light() ); 507 p->setPen( g.light() );
508 else 508 else
509 p->setPen( g.dark() ); 509 p->setPen( g.dark() );
510 510
511 p->drawLine( x2, y, x2, y2 ); 511 p->drawLine( x2, y, x2, y2 );
512 p->drawLine( x, y2, x2, y2 ); 512 p->drawLine( x, y2, x2, y2 );
513 p->setPen( oldPen ); 513 p->setPen( oldPen );
514 514
515 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) ); 515 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) );
516} 516}
517 517
518void QPEStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) 518void QPEStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h )
519{ 519{
520 p->fillRect( x, y, w, h, color1 ); 520 p->fillRect( x, y, w, h, color1 );
521} 521}
522 522
523void QPEStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, 523void QPEStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h,
524 const QColorGroup &g, bool sunken, const QBrush* fill ) 524 const QColorGroup &g, bool sunken, const QBrush* fill )
525{ 525{
526 drawButton( p, x, y, w, h, g, sunken, fill ); 526 drawButton( p, x, y, w, h, g, sunken, fill );
527} 527}
528 528
529QRect QPEStyle::comboButtonRect( int x, int y, int w, int h) 529QRect QPEStyle::comboButtonRect( int x, int y, int w, int h)
530{ 530{
531 return QRect(x+1, y+1, w-2-14, h-2); 531 return QRect(x+1, y+1, w-2-14, h-2);
532} 532}
533 533
534 534
535QRect QPEStyle::comboButtonFocusRect( int x, int y, int w, int h) 535QRect QPEStyle::comboButtonFocusRect( int x, int y, int w, int h)
536{ 536{
537 return QRect(x+2, y+2, w-4-14, h-4); 537 return QRect(x+2, y+2, w-4-14, h-4);
538} 538}
539 539
540void QPEStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, 540void QPEStyle::drawComboButton( QPainter *p, int x, int y, int w, int h,
541 const QColorGroup &g, bool sunken, 541 const QColorGroup &g, bool sunken,
542 bool /*editable*/, 542 bool /*editable*/,
543 bool enabled, 543 bool enabled,
544 const QBrush *fill ) 544 const QBrush *fill )
545{ 545{
546 drawBevelButton( p, x, y, w, h, g, FALSE, fill ); 546 drawBevelButton( p, x, y, w, h, g, FALSE, fill );
547 drawBevelButton( p, x+w-14, y, 14, h, g, sunken, fill ); 547 drawBevelButton( p, x+w-14, y, 14, h, g, sunken, fill );
548 drawArrow( p, QStyle::DownArrow, sunken, 548 drawArrow( p, QStyle::DownArrow, sunken,
549 x+w-14+ 2, y+ 2, 14- 4, h- 4, g, enabled, 549 x+w-14+ 2, y+ 2, 14- 4, h- 4, g, enabled,
550 &g.brush( QColorGroup::Button ) ); 550 &g.brush( QColorGroup::Button ) );
551 551
552} 552}
553 553
554 554
555void QPEStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, 555void QPEStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w,
556 int h, const QColorGroup & g, bool on, bool down, bool enabled ) 556 int h, const QColorGroup & g, bool on, bool down, bool enabled )
557{ 557{
558 static const QCOORD pts1[] = { // dark lines 558 static const QCOORD pts1[] = { // dark lines
559 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; 559 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 };
560 static const QCOORD pts4[] = { // white lines 560 static const QCOORD pts4[] = { // white lines
561 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, 561 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7,
562 11,4, 10,3, 10,2 }; 562 11,4, 10,3, 10,2 };
563 static const QCOORD pts5[] = { // inner fill 563 static const QCOORD pts5[] = { // inner fill
564 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; 564 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 };
565 565
566 p->eraseRect( x, y, w, h ); 566 p->eraseRect( x, y, w, h );
567 QPointArray a( QCOORDARRLEN(pts1), pts1 ); 567 QPointArray a( QCOORDARRLEN(pts1), pts1 );
568 a.translate( x, y ); 568 a.translate( x, y );
569 p->setPen( g.dark() ); 569 p->setPen( g.dark() );
570 p->drawPolyline( a ); 570 p->drawPolyline( a );
571 a.setPoints( QCOORDARRLEN(pts4), pts4 ); 571 a.setPoints( QCOORDARRLEN(pts4), pts4 );
572 a.translate( x, y ); 572 a.translate( x, y );
573 p->setPen( g.light() ); 573 p->setPen( g.light() );
574 p->drawPolyline( a ); 574 p->drawPolyline( a );
575 a.setPoints( QCOORDARRLEN(pts5), pts5 ); 575 a.setPoints( QCOORDARRLEN(pts5), pts5 );
576 a.translate( x, y ); 576 a.translate( x, y );
577 QColor fillColor = ( down || !enabled ) ? g.button() : g.base(); 577 QColor fillColor = ( down || !enabled ) ? g.button() : g.base();
578 p->setPen( fillColor ); 578 p->setPen( fillColor );
579 p->setBrush( fillColor ) ; 579 p->setBrush( fillColor ) ;
580 p->drawPolygon( a ); 580 p->drawPolygon( a );
581 if ( on ) { 581 if ( on ) {
582 p->setPen( NoPen ); 582 p->setPen( NoPen );
583 p->setBrush( g.text() ); 583 p->setBrush( g.text() );
584 p->drawRect( x+5, y+4, 2, 4 ); 584 p->drawRect( x+5, y+4, 2, 4 );
585 p->drawRect( x+4, y+5, 4, 2 ); 585 p->drawRect( x+4, y+5, 4, 2 );
586 } 586 }
587} 587}
588 588
589void QPEStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, 589void QPEStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h,
590 const QColorGroup & g, int state, bool down, bool enabled ) 590 const QColorGroup & g, int state, bool down, bool enabled )
591{ 591{
592 592
593 QBrush fill; 593 QBrush fill;
594 if ( state == QButton::NoChange ) { 594 if ( state == QButton::NoChange ) {
595 QBrush b = p->brush(); 595 QBrush b = p->brush();
596 QColor c = p->backgroundColor(); 596 QColor c = p->backgroundColor();
597 p->setBackgroundMode( TransparentMode ); 597 p->setBackgroundMode( TransparentMode );
598 p->setBackgroundColor( green ); 598 p->setBackgroundColor( green );
599 fill = QBrush(g.base(), Dense4Pattern); 599 fill = QBrush(g.base(), Dense4Pattern);
600 p->setBackgroundColor( c ); 600 p->setBackgroundColor( c );
601 p->setBrush( b ); 601 p->setBrush( b );
602 } else if ( down ) 602 } else if ( down )
603 fill = g.brush( QColorGroup::Button ); 603 fill = g.brush( QColorGroup::Button );
604 else 604 else
605 fill = g.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); 605 fill = g.brush( enabled ? QColorGroup::Base : QColorGroup::Background );
606 drawPanel( p, x, y, w, h, g, TRUE, 1, &fill ); 606 drawPanel( p, x, y, w, h, g, TRUE, 1, &fill );
607 if ( state != QButton::Off ) { 607 if ( state != QButton::Off ) {
608 QPointArray a( 7*2 ); 608 QPointArray a( 7*2 );
609 int i, xx, yy; 609 int i, xx, yy;
610 xx = x+3; 610 xx = x+3;
611 yy = y+5; 611 yy = y+5;
612 for ( i=0; i<3; i++ ) { 612 for ( i=0; i<3; i++ ) {
613 a.setPoint( 2*i, xx, yy ); 613 a.setPoint( 2*i, xx, yy );
614 a.setPoint( 2*i+1, xx, yy+2 ); 614 a.setPoint( 2*i+1, xx, yy+2 );
615 xx++; yy++; 615 xx++; yy++;
616 } 616 }
617 yy -= 2; 617 yy -= 2;
618 for ( i=3; i<7; i++ ) { 618 for ( i=3; i<7; i++ ) {
619 a.setPoint( 2*i, xx, yy ); 619 a.setPoint( 2*i, xx, yy );
620 a.setPoint( 2*i+1, xx, yy+2 ); 620 a.setPoint( 2*i+1, xx, yy+2 );
621 xx++; yy--; 621 xx++; yy--;
622 } 622 }
623 if ( state == QButton::NoChange ) { 623 if ( state == QButton::NoChange ) {
624 p->setPen( g.dark() ); 624 p->setPen( g.dark() );
625 } else { 625 } else {
626 p->setPen( g.text() ); 626 p->setPen( g.text() );
627 } 627 }
628 p->drawLineSegments( a ); 628 p->drawLineSegments( a );
629 } 629 }
630} 630}
631 631
632 #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal) 632 #define HORIZONTAL(sb->orientation() == QScrollBar::Horizontal)
633 #define VERTICAL!HORIZONTAL 633 #define VERTICAL!HORIZONTAL
634 #define MOTIF_BORDER2 634 #define MOTIF_BORDER2
635 #define SLIDER_MIN9 // ### motif says 6 but that's too small 635 #define SLIDER_MIN9 // ### motif says 6 but that's too small
636 636
637/*! \reimp */ 637/*! \reimp */
638 638
639void QPEStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) 639void QPEStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim )
640{ 640{
641 int maxLength; 641 int maxLength;
642 int length = HORIZONTAL ? sb->width() : sb->height(); 642 int length = HORIZONTAL ? sb->width() : sb->height();
643 int extent = HORIZONTAL ? sb->height() : sb->width(); 643 int extent = HORIZONTAL ? sb->height() : sb->width();
644 644
645 if ( length > (extent - 1)*2 ) 645 if ( length > (extent - 1)*2 )
646 buttonDim = extent; 646 buttonDim = extent;
647 else 647 else
648 buttonDim = length/2 - 1; 648 buttonDim = length/2 - 1;
649 649
650 sliderMin = 0; 650 sliderMin = 0;
651 maxLength = length - buttonDim*2; 651 maxLength = length - buttonDim*2;
652 652
653 if ( sb->maxValue() == sb->minValue() ) { 653 if ( sb->maxValue() == sb->minValue() ) {
654 sliderLength = maxLength; 654 sliderLength = maxLength;
655 } else { 655 } else {
656 sliderLength = (sb->pageStep()*maxLength)/ 656 sliderLength = (sb->pageStep()*maxLength)/
657 (sb->maxValue()-sb->minValue()+sb->pageStep()); 657 (sb->maxValue()-sb->minValue()+sb->pageStep());
658 uint range = sb->maxValue()-sb->minValue(); 658 uint range = sb->maxValue()-sb->minValue();
659 if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) 659 if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 )
660 sliderLength = SLIDER_MIN; 660 sliderLength = SLIDER_MIN;
661 if ( sliderLength > maxLength ) 661 if ( sliderLength > maxLength )
662 sliderLength = maxLength; 662 sliderLength = maxLength;
663 } 663 }
664 664
665 sliderMax = sliderMin + maxLength - sliderLength; 665 sliderMax = sliderMin + maxLength - sliderLength;
666} 666}
667 667
668/*!\reimp 668/*!\reimp
669 */ 669 */
670QStyle::ScrollControl QPEStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) 670QStyle::ScrollControl QPEStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p )
671{ 671{
672 if ( !sb->rect().contains( p ) ) 672 if ( !sb->rect().contains( p ) )
673 return NoScroll; 673 return NoScroll;
674 int sliderMin, sliderMax, sliderLength, buttonDim, pos; 674 int sliderMin, sliderMax, sliderLength, buttonDim, pos;
675 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); 675 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim );
676 676
677 if (sb->orientation() == QScrollBar::Horizontal) 677 if (sb->orientation() == QScrollBar::Horizontal)
678 pos = p.x(); 678 pos = p.x();
679 else 679 else
680 pos = p.y(); 680 pos = p.y();
681 681
682 if (pos < sliderStart) 682 if (pos < sliderStart)
683 return SubPage; 683 return SubPage;
684 if (pos < sliderStart + sliderLength) 684 if (pos < sliderStart + sliderLength)
685 return Slider; 685 return Slider;
686 if (pos < sliderMax + sliderLength) 686 if (pos < sliderMax + sliderLength)
687 return AddPage; 687 return AddPage;
688 if (pos < sliderMax + sliderLength + buttonDim) 688 if (pos < sliderMax + sliderLength + buttonDim)