Update example styles to new style API

pull/2/head
Timothy Pearson 13 years ago
parent 8805afa8c6
commit d24053184c

@ -41,8 +41,11 @@ MetalStyle::MetalStyle() : QWindowsStyle() { }
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void MetalStyle::polish( QApplication *app) void MetalStyle::applicationPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
oldPalette = app->palette(); oldPalette = app->palette();
// we simply create a nice QColorGroup with a couple of fancy // we simply create a nice QColorGroup with a couple of fancy
@ -97,21 +100,28 @@ void MetalStyle::polish( QApplication *app)
QPalette newPalette( active, disabled, active ); QPalette newPalette( active, disabled, active );
app->setPalette( newPalette, TRUE ); app->setPalette( newPalette, TRUE );
} }
}
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void MetalStyle::unPolish( QApplication *app) void MetalStyle::applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
app->setPalette(oldPalette, TRUE); app->setPalette(oldPalette, TRUE);
app->setFont( app->font(), TRUE ); app->setFont( app->font(), TRUE );
} }
}
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void MetalStyle::polish( QWidget* w) void MetalStyle::polish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QWidget")) {
QWidget *w = reinterpret_cast<QWidget*>(ptr);
// the polish function sets some widgets to transparent mode and // the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full // some to translate background mode in order to get the full
@ -123,13 +133,17 @@ void MetalStyle::polish( QWidget* w)
} }
if ( !w->isTopLevel() ) { if ( !w->isTopLevel() ) {
if ( w->backgroundPixmap() ) if ( w->backgroundPixmap() ) {
w->setBackgroundOrigin( QWidget::WindowOrigin ); w->setBackgroundOrigin( QWidget::WindowOrigin );
} }
} }
}
}
void MetalStyle::unPolish( QWidget* w) void MetalStyle::unPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QWidget")) {
QWidget *w = reinterpret_cast<QWidget*>(ptr);
// the polish function sets some widgets to transparent mode and // the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full // some to translate background mode in order to get the full
@ -143,11 +157,13 @@ void MetalStyle::unPolish( QWidget* w)
if ( w->backgroundPixmap() ) if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WidgetOrigin ); w->setBackgroundOrigin( QWidget::WidgetOrigin );
} }
}
} }
void MetalStyle::drawPrimitive( PrimitiveElement pe, void MetalStyle::drawPrimitive( PrimitiveElement pe,
QPainter *p, QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags flags, const QStyleOption& opt ) const SFlags flags, const QStyleOption& opt ) const
@ -170,13 +186,13 @@ void MetalStyle::drawPrimitive( PrimitiveElement pe,
drawMetalButton( p, r.x(), r.y(), r.width(), r.height(), drawMetalButton( p, r.x(), r.y(), r.width(), r.height(),
flags & Style_Down, !( flags & Style_Horizontal ) ); flags & Style_Down, !( flags & Style_Horizontal ) );
drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowRight :PE_ArrowDown, drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowRight :PE_ArrowDown,
p, r, cg, flags, opt ); p, ceData, elementFlags, r, cg, flags, opt );
break; break;
case PE_ScrollBarSubLine: case PE_ScrollBarSubLine:
drawMetalButton( p, r.x(), r.y(), r.width(), r.height(), drawMetalButton( p, r.x(), r.y(), r.width(), r.height(),
flags & Style_Down, !( flags & Style_Horizontal ) ); flags & Style_Down, !( flags & Style_Horizontal ) );
drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp, drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp,
p, r, cg, flags, opt ); p, ceData, elementFlags, r, cg, flags, opt );
break; break;
@ -185,18 +201,20 @@ void MetalStyle::drawPrimitive( PrimitiveElement pe,
flags & Style_Horizontal ); flags & Style_Horizontal );
break; break;
default: default:
QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt ); QWindowsStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt );
break; break;
} }
} }
void MetalStyle::drawControl( ControlElement element, void MetalStyle::drawControl( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how, SFlags how,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch( element ) { switch( element ) {
case CE_PushButton: case CE_PushButton:
@ -238,7 +256,7 @@ void MetalStyle::drawControl( ControlElement element,
flags |= Style_Down; flags |= Style_Down;
if ( !btn->isFlat() && !btn->isDown() ) if ( !btn->isFlat() && !btn->isDown() )
flags |= Style_Raised; flags |= Style_Raised;
drawPrimitive( PE_ButtonCommand, p, drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags,
QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1), QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1),
cg, flags, opt ); cg, flags, opt );
@ -248,7 +266,7 @@ void MetalStyle::drawControl( ControlElement element,
flags |= Style_Enabled; flags |= Style_Enabled;
int dx = ( y1 - y2 - 4 ) / 3; int dx = ( y1 - y2 - 4 ) / 3;
drawPrimitive( PE_ArrowDown, p, drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(x2 - dx, dx, y1, y2 - y1), QRect(x2 - dx, dx, y1, y2 - y1),
cg, flags, opt ); cg, flags, opt );
} }
@ -289,29 +307,31 @@ void MetalStyle::drawControl( ControlElement element,
break; break;
} }
default: default:
QWindowsStyle::drawControl( element, p, widget, r, cg, how, opt ); QWindowsStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget );
break; break;
} }
} }
void MetalStyle::drawComplexControl( ComplexControl cc, void MetalStyle::drawComplexControl( ComplexControl cc,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how, SFlags how,
SCFlags sub, SCFlags sub,
SCFlags subActive, SCFlags subActive,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch ( cc ) { switch ( cc ) {
case CC_Slider: case CC_Slider:
{ {
const QSlider *slider = ( const QSlider* ) widget; const QSlider *slider = ( const QSlider* ) widget;
QRect handle = querySubControlMetrics( CC_Slider, widget, QRect handle = querySubControlMetrics( CC_Slider, ceData, elementFlags,
SC_SliderHandle, opt); SC_SliderHandle, opt, widget);
if ( sub & SC_SliderGroove ) if ( sub & SC_SliderGroove )
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how, QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how,
SC_SliderGroove, subActive, opt ); SC_SliderGroove, subActive, opt, widget );
if ( (sub & SC_SliderHandle) && handle.isValid() ) if ( (sub & SC_SliderHandle) && handle.isValid() )
drawMetalButton( p, handle.x(), handle.y(), handle.width(), drawMetalButton( p, handle.x(), handle.y(), handle.width(),
handle.height(), FALSE, handle.height(), FALSE,
@ -328,7 +348,7 @@ void MetalStyle::drawComplexControl( ComplexControl cc,
&cg.brush( QColorGroup::Background ) ); &cg.brush( QColorGroup::Background ) );
drawMetalButton( p, r.x() + r.width() - 2 - 16, r.y() + 2, 16, r.height() - 4, drawMetalButton( p, r.x() + r.width() - 2 - 16, r.y() + 2, 16, r.height() - 4,
how & Style_Sunken, TRUE ); how & Style_Sunken, TRUE );
drawPrimitive( PE_ArrowDown, p, drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect( r.x() + r.width() - 2 - 16 + 2, QRect( r.x() + r.width() - 2 - 16 + 2,
r.y() + 2 + 2, 16 - 4, r.height() - 4 -4 ), r.y() + 2 + 2, 16 - 4, r.height() - 4 -4 ),
cg, cg,
@ -337,8 +357,8 @@ void MetalStyle::drawComplexControl( ComplexControl cc,
break; break;
} }
default: default:
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how, sub, subActive, QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how, sub, subActive,
opt ); opt, widget );
break; break;
} }
} }
@ -473,13 +493,13 @@ void MetalStyle::drawMetalGradient( QPainter *p, int x, int y, int w, int h,
int MetalStyle::pixelMetric( PixelMetric metric, const QWidget *w ) const int MetalStyle::pixelMetric( PixelMetric metric, QStyleControlElementData ceData, ControlElementFlags elementFlags, const QWidget *w ) const
{ {
switch ( metric ) { switch ( metric ) {
case PM_MenuBarFrameWidth: case PM_MenuBarFrameWidth:
return 2; return 2;
default: default:
return QWindowsStyle::pixelMetric( metric, w ); return QWindowsStyle::pixelMetric( metric, ceData, elementFlags, w );
} }
} }

@ -26,13 +26,15 @@ class MetalStyle : public QWindowsStyle
{ {
public: public:
MetalStyle(); MetalStyle();
void polish( QApplication*); void applicationPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void unPolish( QApplication*); void applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void polish( QWidget* ); void polish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void unPolish( QWidget* ); void unPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void drawPrimitive( PrimitiveElement pe, void drawPrimitive( PrimitiveElement pe,
QPainter *p, QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags flags = Style_Default, SFlags flags = Style_Default,
@ -40,22 +42,26 @@ public:
void drawControl( ControlElement element, void drawControl( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how = Style_Default, SFlags how = Style_Default,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawComplexControl( ComplexControl cc, void drawComplexControl( ComplexControl cc,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how = Style_Default, SFlags how = Style_Default,
SCFlags sub = SC_All, SCFlags sub = SC_All,
SCFlags subActive = SC_None, SCFlags subActive = SC_None,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
int pixelMetric( PixelMetric, const QWidget * ) const; const QWidget *widget = 0 ) const;
int pixelMetric( PixelMetric, QStyleControlElementData ceData, ControlElementFlags elementFlags, const QWidget * = 0 ) const;
private: private:

@ -769,8 +769,10 @@ NorwegianWoodStyle::NorwegianWoodStyle() : QWindowsStyle()
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void NorwegianWoodStyle::polish( QApplication *app) void NorwegianWoodStyle::applicationPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
oldPalette = app->palette(); oldPalette = app->palette();
@ -870,19 +872,25 @@ void NorwegianWoodStyle::polish( QApplication *app)
); );
app->setPalette(QPalette(active, disabled, active), TRUE ); app->setPalette(QPalette(active, disabled, active), TRUE );
}
} }
void NorwegianWoodStyle::unPolish( QApplication *app) void NorwegianWoodStyle::applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
app->setPalette(oldPalette, TRUE); app->setPalette(oldPalette, TRUE);
} }
}
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void NorwegianWoodStyle::polish( QWidget* w) void NorwegianWoodStyle::polish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QWidget")) {
QWidget *w = reinterpret_cast<QWidget*>(ptr);
// the polish function sets some widgets to transparent mode and // the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full // some to translate background mode in order to get the full
@ -899,9 +907,13 @@ void NorwegianWoodStyle::polish( QWidget* w)
w->setBackgroundOrigin( QWidget::WindowOrigin ); w->setBackgroundOrigin( QWidget::WindowOrigin );
} }
} }
}
void NorwegianWoodStyle::unPolish( QWidget* w) void NorwegianWoodStyle::unPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
if (ceData.widgetObjectTypes.contains("QWidget")) {
QWidget *w = reinterpret_cast<QWidget*>(ptr);
// the polish function sets some widgets to transparent mode and // the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full // some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group. // benefit from the nice pixmaps in the color group.
@ -916,9 +928,12 @@ void NorwegianWoodStyle::unPolish( QWidget* w)
w->setBackgroundOrigin( QWidget::WidgetOrigin ); w->setBackgroundOrigin( QWidget::WidgetOrigin );
} }
} }
}
void NorwegianWoodStyle::drawPrimitive( PrimitiveElement pe, void NorwegianWoodStyle::drawPrimitive( PrimitiveElement pe,
QPainter *p, QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags flags, const QStyleOption& opt ) const SFlags flags, const QStyleOption& opt ) const
@ -970,28 +985,30 @@ void NorwegianWoodStyle::drawPrimitive( PrimitiveElement pe,
} }
case PE_ScrollBarAddLine: case PE_ScrollBarAddLine:
if ( flags & Style_Horizontal ) if ( flags & Style_Horizontal )
drawSemicircleButton( p, r, PointRight, flags & Style_Down, cg ); drawSemicircleButton( p, ceData, elementFlags, r, PointRight, flags & Style_Down, cg );
else else
drawSemicircleButton( p, r, PointDown, flags & Style_Down, cg ); drawSemicircleButton( p, ceData, elementFlags, r, PointDown, flags & Style_Down, cg );
break; break;
case PE_ScrollBarSubLine: case PE_ScrollBarSubLine:
if ( flags & Style_Horizontal ) if ( flags & Style_Horizontal )
drawSemicircleButton( p, r, PointLeft, flags & Style_Down, cg ); drawSemicircleButton( p, ceData, elementFlags, r, PointLeft, flags & Style_Down, cg );
else else
drawSemicircleButton( p, r, PointUp, flags & Style_Down, cg ); drawSemicircleButton( p, ceData, elementFlags, r, PointUp, flags & Style_Down, cg );
break; break;
default: default:
QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt ); QWindowsStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt );
break; break;
} }
} }
void NorwegianWoodStyle::drawControl( ControlElement element, void NorwegianWoodStyle::drawControl( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how, const QStyleOption& opt ) const SFlags how, const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch( element ) { switch( element ) {
case CE_PushButton: case CE_PushButton:
@ -1033,7 +1050,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
y2 -= 2; y2 -= 2;
} }
drawPrimitive( PE_ButtonCommand, p, drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags,
QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1), QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1),
myCg, flags, opt ); myCg, flags, opt );
@ -1052,7 +1069,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
flags = Style_Default; flags = Style_Default;
if ( btn->isEnabled() ) if ( btn->isEnabled() )
flags |= Style_Enabled; flags |= Style_Enabled;
drawPrimitive( PE_ArrowDown, p, drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect( x2 - dx, dx, y1, y2 - y1), QRect( x2 - dx, dx, y1, y2 - y1),
myCg, flags, opt ); myCg, flags, opt );
} }
@ -1092,16 +1109,18 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
break; break;
} }
default: default:
QWindowsStyle::drawControl( element, p, widget, r, cg, how, opt ); QWindowsStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget );
break; break;
} }
} }
void NorwegianWoodStyle::drawControlMask( ControlElement element, void NorwegianWoodStyle::drawControlMask( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch( element ) { switch( element ) {
case CE_PushButton: case CE_PushButton:
@ -1113,20 +1132,22 @@ void NorwegianWoodStyle::drawControlMask( ControlElement element,
break; break;
} }
default: default:
QWindowsStyle::drawControlMask( element, p, widget, r, opt ); QWindowsStyle::drawControlMask( element, p, ceData, elementFlags, r, opt, widget );
break; break;
} }
} }
void NorwegianWoodStyle::drawComplexControl( ComplexControl cc, void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how, SFlags how,
SCFlags sub, SCFlags sub,
SCFlags subActive, SCFlags subActive,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch( cc ) { switch( cc ) {
case CC_ComboBox: case CC_ComboBox:
@ -1135,15 +1156,15 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
cmb = (const QComboBox*)widget; cmb = (const QComboBox*)widget;
int awh, ax, ay, sh, sy, dh, ew; int awh, ax, ay, sh, sy, dh, ew;
get_combo_parameters( subRect(SR_PushButtonContents, widget), get_combo_parameters( subRect(SR_PushButtonContents, ceData, elementFlags, widget),
ew, awh, ax, ay, sh, dh, sy ); ew, awh, ax, ay, sh, dh, sy );
drawPrimitive( PE_ButtonCommand, p, r, cg, Style_Raised, opt ); drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, r, cg, Style_Raised, opt );
QStyle *mstyle = QStyleFactory::create( "Motif" ); QStyle *mstyle = QStyleFactory::create( "Motif" );
if ( mstyle ) if ( mstyle )
mstyle->drawPrimitive( PE_ArrowDown, p, mstyle->drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(ax, ay, awh, awh), cg, how, opt ); QRect(ax, ay, awh, awh), cg, how, opt );
else else
drawPrimitive( PE_ArrowDown, p, drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(ax, ay, awh, awh), cg, how, opt ); QRect(ax, ay, awh, awh), cg, how, opt );
QPen oldPen = p->pen(); QPen oldPen = p->pen();
@ -1156,8 +1177,8 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
p->setPen( oldPen ); p->setPen( oldPen );
if ( cmb->editable() ) { if ( cmb->editable() ) {
QRect r( querySubControlMetrics(CC_ComboBox, widget, QRect r( querySubControlMetrics(CC_ComboBox, ceData, elementFlags,
SC_ComboBoxEditField, opt) ); SC_ComboBoxEditField, opt, widget) );
qDrawShadePanel( p, r, cg, TRUE, 1, qDrawShadePanel( p, r, cg, TRUE, 1,
&cg.brush(QColorGroup::Button) ); &cg.brush(QColorGroup::Button) );
} }
@ -1165,17 +1186,19 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
break; break;
} }
default: default:
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how, QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how,
sub, subActive, opt ); sub, subActive, opt, widget );
break; break;
} }
} }
void NorwegianWoodStyle::drawComplexControlMask( ComplexControl control, void NorwegianWoodStyle::drawComplexControlMask( ComplexControl control,
QPainter *p, QPainter *p,
const QWidget *widget, const QStyleControlElementData ceData,
const ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
switch ( control ) { switch ( control ) {
case CC_ComboBox: case CC_ComboBox:
@ -1187,15 +1210,17 @@ void NorwegianWoodStyle::drawComplexControlMask( ComplexControl control,
break; break;
} }
default: default:
QWindowsStyle::drawComplexControlMask( control, p, widget, r, opt ); QWindowsStyle::drawComplexControlMask( control, p, ceData, elementFlags, r, opt, widget );
break; break;
} }
} }
QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control, QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
SubControl sc, SubControl sc,
const QStyleOption& opt ) const const QStyleOption& opt,
const QWidget *widget ) const
{ {
QRect rect; QRect rect;
switch ( control ) { switch ( control ) {
@ -1204,15 +1229,15 @@ QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
switch( sc ) { switch( sc ) {
case SC_ComboBoxEditField: case SC_ComboBoxEditField:
{ {
rect = subRect( SR_PushButtonContents, widget ); rect = subRect( SR_PushButtonContents, ceData, elementFlags, widget );
int ew = get_combo_extra_width( rect.height(), 0 ); int ew = get_combo_extra_width( rect.height(), 0 );
rect.setRect( rect.x() + 1, rect.y() + 1, rect.setRect( rect.x() + 1, rect.y() + 1,
rect.width() - 2 - ew, rect.height() - 2 ); rect.width() - 2 - ew, rect.height() - 2 );
break; break;
} }
default: default:
rect = QWindowsStyle::querySubControlMetrics( control, widget, rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt ); sc, opt, widget );
break; break;
} }
break; break;
@ -1237,21 +1262,21 @@ QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
rect.setRect( b, b, w - 2 * b, w - 2 * b ); rect.setRect( b, b, w - 2 * b, w - 2 * b );
break; break;
default: default:
rect = QWindowsStyle::querySubControlMetrics( control, widget, rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt ); sc, opt, widget );
break; break;
} }
break; break;
} }
default: default:
rect = QWindowsStyle::querySubControlMetrics( control, widget, rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt ); sc, opt, widget );
break; break;
} }
return rect; return rect;
} }
QRect NorwegianWoodStyle::subRect( SubRect sr, const QWidget * widget ) const QRect NorwegianWoodStyle::subRect( SubRect sr, const QStyleControlElementData ceData, const ControlElementFlags elementFlags, const QWidget * widget ) const
{ {
QRect r; QRect r;
switch ( sr ) { switch ( sr ) {
@ -1276,14 +1301,14 @@ QRect NorwegianWoodStyle::subRect( SubRect sr, const QWidget * widget ) const
} }
case SR_ComboBoxFocusRect: case SR_ComboBoxFocusRect:
{ {
r = subRect( SR_PushButtonContents, widget ); r = subRect( SR_PushButtonContents, ceData, elementFlags, widget );
int ew = get_combo_extra_width( r.height() ); int ew = get_combo_extra_width( r.height() );
r.setRect( r.x() + 1, r.y() + 1, r.width() - 2 - ew, r.setRect( r.x() + 1, r.y() + 1, r.width() - 2 - ew,
r.height() - 2 ); r.height() - 2 );
break; break;
} }
default: default:
r = QWindowsStyle::subRect( sr, widget ); r = QWindowsStyle::subRect( sr, ceData, elementFlags, widget );
break; break;
} }
return r; return r;
@ -1358,11 +1383,12 @@ static void get_combo_parameters( const QRect &r,
static inline int buttonthickness( int d ) static inline int buttonthickness( int d )
{ return d > 20 ? 5 : ( d < 10 ? 2: 3 ); } { return d > 20 ? 5 : ( d < 10 ? 2: 3 ); }
void NorwegianWoodStyle::drawSemicircleButton( QPainter *p, const QRect &r, void NorwegianWoodStyle::drawSemicircleButton( QPainter *p, QStyleControlElementData ceData,
ControlElementFlags elementFlags, const QRect &r,
int dir, bool sunken, int dir, bool sunken,
const QColorGroup &g ) const const QColorGroup &g ) const
{ {
int b = pixelMetric( PM_ScrollBarExtent ) > 20 ? 3 : 2; int b = pixelMetric( PM_ScrollBarExtent, ceData, elementFlags ) > 20 ? 3 : 2;
QRegion extrn( r.x(), r.y(), r.width(), r.height(), QRegion::Ellipse ); QRegion extrn( r.x(), r.y(), r.width(), r.height(), QRegion::Ellipse );
QRegion intern( r.x()+b, r.y()+b, r.width()-2*b, r.height()-2*b, QRegion::Ellipse ); QRegion intern( r.x()+b, r.y()+b, r.width()-2*b, r.height()-2*b, QRegion::Ellipse );

@ -26,13 +26,15 @@ class NorwegianWoodStyle : public QWindowsStyle
{ {
public: public:
NorwegianWoodStyle(); NorwegianWoodStyle();
void polish( QApplication*); void applicationPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void polish( QWidget* ); void polish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void unPolish( QWidget* ); void unPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void unPolish( QApplication*); void applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void drawPrimitive( PrimitiveElement pe, void drawPrimitive( PrimitiveElement pe,
QPainter *p, QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags flags = Style_Default, SFlags flags = Style_Default,
@ -40,44 +42,54 @@ public:
void drawControl( ControlElement element, void drawControl( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how = Style_Default, SFlags how = Style_Default,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawControlMask( ControlElement element, void drawControlMask( ControlElement element,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawComplexControl( ComplexControl cc, void drawComplexControl( ComplexControl cc,
QPainter *p, QPainter *p,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QColorGroup &cg, const QColorGroup &cg,
SFlags how = Style_Default, SFlags how = Style_Default,
SCFlags sub = SC_All, SCFlags sub = SC_All,
SCFlags subActive = SC_None, SCFlags subActive = SC_None,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawComplexControlMask( ComplexControl control, void drawComplexControlMask( ComplexControl control,
QPainter *p, QPainter *p,
const QWidget *widget, const QStyleControlElementData ceData,
const ControlElementFlags elementFlags,
const QRect &r, const QRect &r,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
QRect querySubControlMetrics( ComplexControl control, QRect querySubControlMetrics( ComplexControl control,
const QWidget *widget, QStyleControlElementData ceData,
ControlElementFlags elementFlags,
SubControl sc, SubControl sc,
const QStyleOption& = QStyleOption::Default ) const; const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
QRect subRect( SubRect r, const QWidget *widget ) const; QRect subRect( SubRect r, const QStyleControlElementData ceData, const ControlElementFlags elementFlags, const QWidget *widget ) const;
private: private:
void drawSemicircleButton(QPainter *p, const QRect &r, int dir, void drawSemicircleButton(QPainter *p, QStyleControlElementData ceData, ControlElementFlags elementFlags, const QRect &r, int dir,
bool sunken, const QColorGroup &g ) const; bool sunken, const QColorGroup &g ) const;
QPalette oldPalette; QPalette oldPalette;
QPixmap *sunkenDark; QPixmap *sunkenDark;

Loading…
Cancel
Save