summaryrefslogtreecommitdiff
path: root/noncore/styles/flat/flat.cpp
Unidiff
Diffstat (limited to 'noncore/styles/flat/flat.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/flat/flat.cpp128
1 files changed, 99 insertions, 29 deletions
diff --git a/noncore/styles/flat/flat.cpp b/noncore/styles/flat/flat.cpp
index b6635c5..24366f6 100644
--- a/noncore/styles/flat/flat.cpp
+++ b/noncore/styles/flat/flat.cpp
@@ -9,77 +9,94 @@
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 "flat.h" 21#include <qtopia/qpeapplication.h>
22#include <qpe/qpeapplication.h>
23#include <qpushbutton.h> 22#include <qpushbutton.h>
24#include <qtoolbutton.h> 23#include <qtoolbutton.h>
25#include <qpainter.h> 24#include <qpainter.h>
26#include <qfontmetrics.h> 25#include <qfontmetrics.h>
27#include <qpalette.h> 26#include <qpalette.h>
28#include <qdrawutil.h> 27#include <qdrawutil.h>
29#include <qscrollbar.h> 28#include <qscrollbar.h>
30#include <qbutton.h> 29#include <qbutton.h>
31#include <qframe.h> 30#include <qframe.h>
32#include <qtabbar.h> 31#include <qtabbar.h>
33#include <qspinbox.h> 32#include <qspinbox.h>
34#include <qlineedit.h> 33#include <qlineedit.h>
34#include <qmap.h>
35 35
36#define INCLUDE_MENUITEM_DEF 36#define INCLUDE_MENUITEM_DEF
37#include <qmenudata.h> 37#include <qmenudata.h>
38#include <qpopupmenu.h>
39
40#include "flat.h"
38 41
39#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) 42#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
40 43
41class SpinBoxHack : public QSpinBox 44class SpinBoxHack : public QSpinBox
42{ 45{
43public: 46public:
44 void setFlatButtons( bool f ) { 47 void setFlatButtons( bool f ) {
45 upButton()->setFlat( f ); 48 upButton()->setFlat( f );
46 downButton()->setFlat( f ); 49 downButton()->setFlat( f );
47 } 50 }
48}; 51};
49 52
50class FlatStylePrivate : public QObject 53class FlatStylePrivate : public QObject
51{ 54{
52 Q_OBJECT 55 Q_OBJECT
53public: 56public:
54 FlatStylePrivate() : QObject() {} 57 FlatStylePrivate() : QObject() {}
55 58
56 bool eventFilter( QObject *o, QEvent *e ) { 59 bool eventFilter( QObject *o, QEvent *e ) {
57 if ( e->type() == QEvent::ParentPaletteChange && o->inherits( "QMenuBar" ) ) { 60 if ( e->type() == QEvent::ParentPaletteChange ) {
58 QWidget *w = (QWidget *)o; 61 if ( o->inherits( "QMenuBar" ) ) {
59 if ( w->parentWidget() ) { 62 QWidget *w = (QWidget *)o;
60 QPalette p = w->parentWidget()->palette(); 63 if ( w->parentWidget() ) {
61 QColorGroup a = p.active(); 64 QPalette p = w->parentWidget()->palette();
62 a.setColor( QColorGroup::Light, a.foreground() ); 65 QColorGroup a = p.active();
63 a.setColor( QColorGroup::Dark, a.foreground() ); 66 a.setColor( QColorGroup::Light, a.foreground() );
64 p.setActive( a ); 67 a.setColor( QColorGroup::Dark, a.foreground() );
65 p.setInactive( a ); 68 p.setActive( a );
66 w->setPalette( p ); 69 p.setInactive( a );
70 w->setPalette( p );
71 }
72 } else if ( o->inherits( "QHeader" ) ) {
73 QWidget *w = (QWidget *)o;
74 if ( w->parentWidget() ) {
75 QPalette p = w->parentWidget()->palette();
76 QColorGroup a = p.active();
77 a.setColor( QColorGroup::Light, a.button() );
78 p.setActive( a );
79 p.setInactive( a );
80 w->setPalette( p );
81 }
67 } 82 }
68 } 83 }
69 return FALSE; 84 return FALSE;
70 } 85 }
86
87 QMap<QFrame *,int> frameStyles;
71}; 88};
72 89
73FlatStyle::FlatStyle() : revItem(FALSE) 90FlatStyle::FlatStyle() : revItem(FALSE), fillBtnBorder(FALSE)
74{ 91{
75 setButtonMargin(3); 92 setButtonMargin(3);
76 setScrollBarExtent(13,13); 93 setScrollBarExtent(13,13);
77 setButtonDefaultIndicatorWidth(0); 94 setButtonDefaultIndicatorWidth(0);
78 d = new FlatStylePrivate; 95 d = new FlatStylePrivate;
79} 96}
80 97
81FlatStyle::~FlatStyle() 98FlatStyle::~FlatStyle()
82{ 99{
83 delete d; 100 delete d;
84} 101}
85 102
@@ -92,62 +109,76 @@ QSize FlatStyle::scrollBarExtent() const
92{ 109{
93 return QSize(13,13); 110 return QSize(13,13);
94} 111}
95 112
96void FlatStyle::polish ( QPalette & ) 113void FlatStyle::polish ( QPalette & )
97{ 114{
98} 115}
99 116
100void FlatStyle::polish( QWidget *w ) 117void FlatStyle::polish( QWidget *w )
101{ 118{
102 if ( w->inherits( "QFrame" ) ) { 119 if ( w->inherits( "QFrame" ) ) {
103 QFrame *f = (QFrame *)w; 120 QFrame *f = (QFrame *)w;
104 if ( f->frameShape() != QFrame::NoFrame ) 121 if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine )
122 f->setFrameShadow( QFrame::Plain );
123 else if ( f->frameShape() != QFrame::NoFrame )
105 f->setFrameShape( QFrame::StyledPanel ); 124 f->setFrameShape( QFrame::StyledPanel );
106 f->setLineWidth( 1 ); 125 f->setLineWidth( 1 );
107 } 126 }
108 if ( w->inherits( "QSpinBox" ) ) 127 if ( w->inherits( "QSpinBox" ) )
109 ((SpinBoxHack*)w)->setFlatButtons( TRUE ); 128 ((SpinBoxHack*)w)->setFlatButtons( TRUE );
110 if ( w->inherits( "QMenuBar" ) ) { 129 if ( w->inherits( "QMenuBar" ) ) {
111 // make selected item look flat 130 // make selected item look flat
112 QPalette p = w->palette(); 131 QPalette p = w->palette();
113 QColorGroup a = p.active(); 132 QColorGroup a = p.active();
114 a.setColor( QColorGroup::Light, a.foreground() ); 133 a.setColor( QColorGroup::Light, a.foreground() );
115 a.setColor( QColorGroup::Dark, a.foreground() ); 134 a.setColor( QColorGroup::Dark, a.foreground() );
116 p.setActive( a ); 135 p.setActive( a );
117 p.setInactive( a ); 136 p.setInactive( a );
118 w->setPalette( p ); 137 w->setPalette( p );
119 w->installEventFilter( d ); 138 w->installEventFilter( d );
139 } else if ( w->inherits( "QHeader" ) ) {
140 // make headers look flat
141 QPalette p = w->palette();
142 QColorGroup a = p.active();
143 a.setColor( QColorGroup::Light, a.button() );
144 p.setActive( a );
145 p.setInactive( a );
146 w->setPalette( p );
147 w->installEventFilter( d );
120 } 148 }
121} 149}
122 150
123void FlatStyle::unPolish( QWidget *w ) 151void FlatStyle::unPolish( QWidget *w )
124{ 152{
125 if ( w->inherits( "QFrame" ) ) { 153 if ( w->inherits("QFrame") ) {
126 QFrame *f = (QFrame *)w; 154 QFrame *f = (QFrame *)w;
127 if ( f->frameShape() != QFrame::NoFrame ) 155 if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) {
156 f->setFrameShadow( QFrame::Sunken );
157 } else if ( f->frameShape() != QFrame::NoFrame ) {
128 f->setFrameShape( QFrame::StyledPanel ); 158 f->setFrameShape( QFrame::StyledPanel );
129 f->setLineWidth( 2 ); 159 f->setLineWidth( 2 );
160 }
130 } 161 }
131 if ( w->inherits( "QSpinBox" ) ) 162 if ( w->inherits("QSpinBox") )
132 ((SpinBoxHack*)w)->setFlatButtons( FALSE ); 163 ((SpinBoxHack*)w)->setFlatButtons( FALSE );
133 if ( w->inherits( "QMenuBar" ) ) { 164 if ( w->inherits("QMenuBar") || w->inherits("QHeader") ) {
134 w->unsetPalette(); 165 w->unsetPalette();
135 w->removeEventFilter( d ); 166 w->removeEventFilter( d );
136 } 167 }
137} 168}
138 169
139int FlatStyle::defaultFrameWidth() const 170int FlatStyle::defaultFrameWidth() const
140{ 171{
141 return 1; 172 return 2;
142} 173}
143 174
144void FlatStyle::drawItem( QPainter *p, int x, int y, int w, int h, 175void FlatStyle::drawItem( QPainter *p, int x, int y, int w, int h,
145 int flags, const QColorGroup &g, bool enabled, 176 int flags, const QColorGroup &g, bool enabled,
146 const QPixmap *pixmap, const QString& text, int len, 177 const QPixmap *pixmap, const QString& text, int len,
147 const QColor* penColor ) 178 const QColor* penColor )
148{ 179{
149 QColor pc( penColor ? *penColor : g.foreground() ); 180 QColor pc( penColor ? *penColor : g.foreground() );
150 QColorGroup cg( g ); 181 QColorGroup cg( g );
151 if ( !enabled ) 182 if ( !enabled )
152 cg.setColor( QColorGroup::Light, cg.background() ); 183 cg.setColor( QColorGroup::Light, cg.background() );
153 if ( revItem ) { 184 if ( revItem ) {
@@ -162,34 +193,48 @@ void FlatStyle::drawPanel ( QPainter * p, int x, int y, int w, int h,
162{ 193{
163 if ( fill ) 194 if ( fill )
164 p->setBrush( *fill ); 195 p->setBrush( *fill );
165 p->setPen( QPen(g.foreground(), lineWidth) ); 196 p->setPen( QPen(g.foreground(), lineWidth) );
166 p->drawRect( x, y, w, h ); 197 p->drawRect( x, y, w, h );
167} 198}
168 199
169void FlatStyle::drawButton( QPainter *p, int x, int y, int w, int h, 200void FlatStyle::drawButton( QPainter *p, int x, int y, int w, int h,
170 const QColorGroup &cg, bool /*sunken*/, const QBrush* fill ) 201 const QColorGroup &cg, bool /*sunken*/, const QBrush* fill )
171{ 202{
172 QPen oldPen = p->pen(); 203 QPen oldPen = p->pen();
173 204
205 int x2 = x+w-1;
206 int y2 = y+h-1;
207
208 if ( fillBtnBorder && btnBg != cg.color(QColorGroup::Button) ) {
209 p->setPen( btnBg );
210 p->drawLine( x, y, x2, y );
211 p->drawLine( x, y2, x2, y2 );
212 p->drawLine( x, y+1, x, y2-1 );
213 p->drawLine( x2, y+1, x2, y2-1 );
214 p->fillRect( x+1, y+1, 3, 3, btnBg );
215 p->fillRect( x+1, y2-3, 3, 3, btnBg );
216 p->fillRect( x2-3, y2-3, 3, 3, btnBg );
217 p->fillRect( x2-3, y+1, 3, 3, btnBg );
218 p->fillRect( x+2, y+2, w-4, h-4, fill?(*fill):cg.brush(QColorGroup::Button) );
219 } else {
220 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):cg.brush(QColorGroup::Button) );
221 }
222
174 if ( h >= 10 ) { 223 if ( h >= 10 ) {
175 x++; y++; 224 x++; y++;
225 x2--; y2--;
176 w -= 2; h -= 2; 226 w -= 2; h -= 2;
177 } 227 }
178 228
179 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):cg.brush(QColorGroup::Button) );
180
181 int x2 = x+w-1;
182 int y2 = y+h-1;
183
184 p->setPen( cg.foreground() ); 229 p->setPen( cg.foreground() );
185 230
186 if ( h < 10 ) { 231 if ( h < 10 ) {
187 p->setBrush( NoBrush ); 232 p->setBrush( NoBrush );
188 p->drawRect( x, y, w, h ); 233 p->drawRect( x, y, w, h );
189 } else { 234 } else {
190 p->drawLine( x+3, y, x2-3, y ); 235 p->drawLine( x+3, y, x2-3, y );
191 p->drawLine( x+3, y2, x2-3, y2 ); 236 p->drawLine( x+3, y2, x2-3, y2 );
192 p->drawLine( x, y+3, x, y2-3 ); 237 p->drawLine( x, y+3, x, y2-3 );
193 p->drawLine( x2, y+3, x2, y2-3 ); 238 p->drawLine( x2, y+3, x2, y2-3 );
194 239
195 p->drawLine( x+1, y+1, x+2, y+1 ); 240 p->drawLine( x+1, y+1, x+2, y+1 );
@@ -216,30 +261,41 @@ void FlatStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h )
216void FlatStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, 261void FlatStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h,
217 const QColorGroup &g, bool /*sunken*/, const QBrush* fill ) 262 const QColorGroup &g, bool /*sunken*/, const QBrush* fill )
218{ 263{
219 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) ); 264 p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) );
220 p->setPen( g.foreground() ); 265 p->setPen( g.foreground() );
221 p->setBrush( NoBrush ); 266 p->setBrush( NoBrush );
222 p->drawRect( x, y, w, h ); 267 p->drawRect( x, y, w, h );
223} 268}
224 269
225void FlatStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, 270void FlatStyle::drawToolButton( QPainter *p, int x, int y, int w, int h,
226 const QColorGroup &g, bool sunken, const QBrush* fill ) 271 const QColorGroup &g, bool sunken, const QBrush* fill )
227{ 272{
273 if ( p->device()->devType() == QInternal::Widget ) {
274 QWidget *w = (QWidget *)p->device();
275 if ( w->isA("QToolButton") ) {
276 QToolButton *btn = (QToolButton *)w;
277 if ( btn->parentWidget() ) {
278 btnBg = btn->parentWidget()->backgroundColor();
279 fillBtnBorder = TRUE;
280 }
281 }
282 }
228 QBrush fb( fill ? *fill : g.button() ); 283 QBrush fb( fill ? *fill : g.button() );
229 if ( sunken && fb == g.brush( QColorGroup::Button ) ) { 284 if ( sunken && fb == g.brush( QColorGroup::Button ) ) {
230 fb = g.buttonText(); 285 fb = g.buttonText();
231 revItem = TRUE;// ugh 286 revItem = TRUE;// ugh
232 } 287 }
233 drawButton( p, x, y, w, h, g, sunken, &fb ); 288 drawButton( p, x, y, w, h, g, sunken, &fb );
289 fillBtnBorder = FALSE;
234} 290}
235 291
236void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p ) 292void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p )
237{ 293{
238 QColorGroup g = btn->colorGroup(); 294 QColorGroup g = btn->colorGroup();
239 int x1, y1, x2, y2; 295 int x1, y1, x2, y2;
240 296
241 btn->rect().coords( &x1, &y1, &x2, &y2 );// get coordinates 297 btn->rect().coords( &x1, &y1, &x2, &y2 );// get coordinates
242 298
243 p->setPen( g.foreground() ); 299 p->setPen( g.foreground() );
244 p->setBrush( QBrush(g.button(),NoBrush) ); 300 p->setBrush( QBrush(g.button(),NoBrush) );
245 301
@@ -248,24 +304,29 @@ void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p )
248 if ( btn->isDefault() || btn->autoDefault() ) { 304 if ( btn->isDefault() || btn->autoDefault() ) {
249 if ( btn->isDefault() ) { 305 if ( btn->isDefault() ) {
250 p->setPen( g.shadow() ); 306 p->setPen( g.shadow() );
251 p->drawRect( x1, y1, x2-x1+1, y2-y1+1 ); 307 p->drawRect( x1, y1, x2-x1+1, y2-y1+1 );
252 } 308 }
253 x1 += diw; 309 x1 += diw;
254 y1 += diw; 310 y1 += diw;
255 x2 -= diw; 311 x2 -= diw;
256 y2 -= diw; 312 y2 -= diw;
257 } 313 }
258 */ 314 */
259 315
316 if ( btn->parentWidget() ) {
317 btnBg = btn->parentWidget()->backgroundColor();
318 fillBtnBorder = TRUE;
319 }
320
260 bool clearButton = TRUE; 321 bool clearButton = TRUE;
261 if ( btn->isDown() ) { 322 if ( btn->isDown() ) {
262 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, 323 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE,
263 &g.brush( QColorGroup::Text ) ); 324 &g.brush( QColorGroup::Text ) );
264 } else { 325 } else {
265 if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() ) { 326 if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() ) {
266 QBrush fill(g.light(), Dense4Pattern ); 327 QBrush fill(g.light(), Dense4Pattern );
267 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &fill ); 328 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &fill );
268 clearButton = FALSE; 329 clearButton = FALSE;
269 } else { 330 } else {
270 if ( !btn->isFlat() ) 331 if ( !btn->isFlat() )
271 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, btn->isOn(), 332 drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, btn->isOn(),
@@ -274,24 +335,25 @@ void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p )
274 } 335 }
275 /* 336 /*
276 if ( clearButton ) { 337 if ( clearButton ) {
277 if (btn->isDown()) 338 if (btn->isDown())
278 p->setBrushOrigin(p->brushOrigin() + QPoint(1,1)); 339 p->setBrushOrigin(p->brushOrigin() + QPoint(1,1));
279 p->fillRect( x1+2, y1+2, x2-x1-3, y2-y1-3, 340 p->fillRect( x1+2, y1+2, x2-x1-3, y2-y1-3,
280 g.brush( QColorGroup::Button ) ); 341 g.brush( QColorGroup::Button ) );
281 if (btn->isDown()) 342 if (btn->isDown())
282 p->setBrushOrigin(p->brushOrigin() - QPoint(1,1)); 343 p->setBrushOrigin(p->brushOrigin() - QPoint(1,1));
283 } 344 }
284 */ 345 */
285 346
347 fillBtnBorder = FALSE;
286 if ( p->brush().style() != NoBrush ) 348 if ( p->brush().style() != NoBrush )
287 p->setBrush( NoBrush ); 349 p->setBrush( NoBrush );
288} 350}
289 351
290void FlatStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) 352void FlatStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p )
291{ 353{
292 QRect r = pushButtonContentsRect( btn ); 354 QRect r = pushButtonContentsRect( btn );
293 int x, y, w, h; 355 int x, y, w, h;
294 r.rect( &x, &y, &w, &h ); 356 r.rect( &x, &y, &w, &h );
295 QColorGroup cg = btn->colorGroup(); 357 QColorGroup cg = btn->colorGroup();
296 if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() && !btn->isDown() ) 358 if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() && !btn->isDown() )
297 cg.setColor( QColorGroup::ButtonText, btn->colorGroup().text() ); 359 cg.setColor( QColorGroup::ButtonText, btn->colorGroup().text() );
@@ -580,25 +642,26 @@ void FlatStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sl
580 cg.setColor( QColorGroup::ButtonText, g.button() ); 642 cg.setColor( QColorGroup::ButtonText, g.button() );
581 int xo = VERTICAL ? 1 : 0; 643 int xo = VERTICAL ? 1 : 0;
582 drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE, 644 drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE,
583 subB.x()+2+xo, subB.y()+2, subB.width()-4-xo, subB.height()-4, 645 subB.x()+2+xo, subB.y()+2, subB.width()-4-xo, subB.height()-4,
584 cg, TRUE, &p->brush() ); 646 cg, TRUE, &p->brush() );
585 } 647 }
586 648
587 649
588 p->setPen( g.foreground() ); 650 p->setPen( g.foreground() );
589 p->setBrush( g.brush( QColorGroup::Mid ) ); 651 p->setBrush( g.brush( QColorGroup::Mid ) );
590 if ( controls & SubPage ) 652 if ( controls & SubPage )
591 p->drawRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height() ); 653 p->drawRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height() );
592 if ( controls & AddPage && addPageR.y() < addPageR.bottom() ) 654 if ( controls & AddPage && addPageR.y() < addPageR.bottom() &&
655 addPageR.x() < addPageR.right() )
593 p->drawRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height() ); 656 p->drawRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height() );
594 if ( controls & Slider ) { 657 if ( controls & Slider ) {
595 QPoint bo = p->brushOrigin(); 658 QPoint bo = p->brushOrigin();
596 p->setBrushOrigin(sliderR.topLeft()); 659 p->setBrushOrigin(sliderR.topLeft());
597 p->setPen( g.foreground() ); 660 p->setPen( g.foreground() );
598 p->setBrush( g.button() ); 661 p->setBrush( g.button() );
599 p->drawRect( sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height() ); 662 p->drawRect( sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height() );
600 p->setBrushOrigin(bo); 663 p->setBrushOrigin(bo);
601 QColorGroup cg( g ); 664 QColorGroup cg( g );
602 if ( maxedOut ) 665 if ( maxedOut )
603 cg.setColor( QColorGroup::ButtonText, g.mid() ); 666 cg.setColor( QColorGroup::ButtonText, g.mid() );
604 drawRiffles( p, sliderR.x(), sliderR.y(), 667 drawRiffles( p, sliderR.x(), sliderR.y(),
@@ -775,24 +838,30 @@ void FlatStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected
775} 838}
776 839
777 static const int motifItemFrame = 0;// menu item frame width 840 static const int motifItemFrame = 0;// menu item frame width
778 static const int motifSepHeight = 2;// separator item height 841 static const int motifSepHeight = 2;// separator item height
779 static const int motifItemHMargin = 1;// menu item hor text margin 842 static const int motifItemHMargin = 1;// menu item hor text margin
780 static const int motifItemVMargin = 2;// menu item ver text margin 843 static const int motifItemVMargin = 2;// menu item ver text margin
781 static const int motifArrowHMargin = 0;// arrow horizontal margin 844 static const int motifArrowHMargin = 0;// arrow horizontal margin
782 static const int motifTabSpacing = 12;// space between text and tab 845 static const int motifTabSpacing = 12;// space between text and tab
783 static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark 846 static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark
784 static const int windowsRightBorder= 8; // right border on windows 847 static const int windowsRightBorder= 8; // right border on windows
785static const int windowsCheckMarkWidth = 2; // checkmarks width on windows 848static const int windowsCheckMarkWidth = 2; // checkmarks width on windows
786 849
850void FlatStyle::polishPopupMenu ( QPopupMenu *m )
851{
852 QWindowsStyle::polishPopupMenu( m );
853 m->setLineWidth( 1 );
854}
855
787/*! \reimp 856/*! \reimp
788*/ 857*/
789int FlatStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) 858int FlatStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ )
790{ 859{
791#ifndef QT_NO_MENUDATA 860#ifndef QT_NO_MENUDATA
792 int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm 861 int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm
793 862
794 if ( mi->isSeparator() ) 863 if ( mi->isSeparator() )
795 return 10; // arbitrary 864 return 10; // arbitrary
796 else if ( mi->pixmap() ) 865 else if ( mi->pixmap() )
797 w += mi->pixmap()->width();// pixmap only 866 w += mi->pixmap()->width();// pixmap only
798 867
@@ -999,34 +1068,35 @@ FlatStyleImpl::~FlatStyleImpl()
999 // is set. 1068 // is set.
1000} 1069}
1001 1070
1002QStyle *FlatStyleImpl::style() 1071QStyle *FlatStyleImpl::style()
1003{ 1072{
1004 if ( !flat ) 1073 if ( !flat )
1005 flat = new FlatStyle(); 1074 flat = new FlatStyle();
1006 return flat; 1075 return flat;
1007} 1076}
1008 1077
1009QString FlatStyleImpl::name() const 1078QString FlatStyleImpl::name() const
1010{ 1079{
1011 return QString("Flat"); 1080 return qApp->translate("FlatStyle", "Flat", "Name of the style Flat");
1012} 1081}
1013 1082
1014QRESULT FlatStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) 1083QRESULT FlatStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
1015{ 1084{
1016 *iface = 0; 1085 *iface = 0;
1017 if ( uuid == IID_QUnknown ) 1086 if ( uuid == IID_QUnknown )
1018 *iface = this; 1087 *iface = this;
1019 else if ( uuid == IID_Style ) 1088 else if ( uuid == IID_Style )
1020 *iface = this; 1089 *iface = this;
1090 else
1091 return QS_FALSE;
1021 1092
1022 if ( *iface ) 1093 (*iface)->addRef();
1023 (*iface)->addRef();
1024 return QS_OK; 1094 return QS_OK;
1025} 1095}
1026 1096
1027Q_EXPORT_INTERFACE() 1097Q_EXPORT_INTERFACE()
1028{ 1098{
1029 Q_CREATE_INSTANCE( FlatStyleImpl ) 1099 Q_CREATE_INSTANCE( FlatStyleImpl )
1030} 1100}
1031 1101
1032#include "flat.moc" 1102#include "flat.moc"