Update example styles to new style API

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

@ -41,113 +41,129 @@ MetalStyle::MetalStyle() : QWindowsStyle() { }
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void MetalStyle::polish( QApplication *app) void MetalStyle::applicationPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
oldPalette = app->palette(); if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
// we simply create a nice QColorGroup with a couple of fancy
// pixmaps here and apply to it all widgets oldPalette = app->palette();
QFont f("times", app->font().pointSize() ); // we simply create a nice QColorGroup with a couple of fancy
f.setBold( TRUE ); // pixmaps here and apply to it all widgets
f.setItalic( TRUE );
app->setFont( f, TRUE, "QMenuBar"); QFont f("times", app->font().pointSize() );
app->setFont( f, TRUE, "QPopupMenu"); f.setBold( TRUE );
f.setItalic( TRUE );
app->setFont( f, TRUE, "QMenuBar");
app->setFont( f, TRUE, "QPopupMenu");
// QPixmap button( stonedark_xpm );
QColor gold("#B9B9A5A54040"); //same as topgrad below
QPixmap button( 1, 1 ); button.fill( gold ); // QPixmap button( stonedark_xpm );
QPixmap background(marble_xpm); QColor gold("#B9B9A5A54040"); //same as topgrad below
QPixmap dark( 1, 1 ); dark.fill( red.dark() ); QPixmap button( 1, 1 ); button.fill( gold );
QPixmap mid( stone1_xpm );
QPixmap light( stone1_xpm );//1, 1 ); light.fill( green ); QPixmap background(marble_xpm);
QPixmap dark( 1, 1 ); dark.fill( red.dark() );
QPalette op = app->palette(); QPixmap mid( stone1_xpm );
QPixmap light( stone1_xpm );//1, 1 ); light.fill( green );
QColor backCol( 227,227,227 );
QPalette op = app->palette();
// QPalette op(white);
QColorGroup active (op.active().foreground(), QColor backCol( 227,227,227 );
QBrush(op.active().button(),button),
QBrush(op.active().light(), light), // QPalette op(white);
QBrush(op.active().dark(), dark), QColorGroup active (op.active().foreground(),
QBrush(op.active().mid(), mid), QBrush(op.active().button(),button),
op.active().text(), QBrush(op.active().light(), light),
Qt::white, QBrush(op.active().dark(), dark),
op.active().base(),// QColor(236,182,120), QBrush(op.active().mid(), mid),
QBrush(backCol, background) op.active().text(),
); Qt::white,
active.setColor( QColorGroup::ButtonText, Qt::white ); op.active().base(),// QColor(236,182,120),
active.setColor( QColorGroup::Shadow, Qt::black ); QBrush(backCol, background)
QColorGroup disabled (op.disabled().foreground(), );
QBrush(op.disabled().button(),button), active.setColor( QColorGroup::ButtonText, Qt::white );
QBrush(op.disabled().light(), light), active.setColor( QColorGroup::Shadow, Qt::black );
op.disabled().dark(), QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().mid(), mid), QBrush(op.disabled().button(),button),
op.disabled().text(), QBrush(op.disabled().light(), light),
Qt::white, op.disabled().dark(),
op.disabled().base(),// QColor(236,182,120), QBrush(op.disabled().mid(), mid),
QBrush(backCol, background) op.disabled().text(),
); Qt::white,
op.disabled().base(),// QColor(236,182,120),
QPalette newPalette( active, disabled, active ); QBrush(backCol, background)
app->setPalette( newPalette, TRUE ); );
QPalette newPalette( active, disabled, active );
app->setPalette( newPalette, TRUE );
}
} }
/*! /*!
Reimplementation from QStyle Reimplementation from QStyle
*/ */
void MetalStyle::unPolish( QApplication *app) void MetalStyle::applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
app->setPalette(oldPalette, TRUE); if (ceData.widgetObjectTypes.contains("QApplication")) {
app->setFont( app->font(), TRUE ); QApplication *app = reinterpret_cast<QApplication*>(ptr);
app->setPalette(oldPalette, 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
// benefit from the nice pixmaps in the color group. // benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){ if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::NoBackground ); w->setBackgroundMode( QWidget::NoBackground );
return; return;
} }
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
// benefit from the nice pixmaps in the color group. // benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){ if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::PaletteButton ); w->setBackgroundMode( QWidget::PaletteButton );
return; return;
} }
if ( !w->isTopLevel() ) { if ( !w->isTopLevel() ) {
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,156 +769,171 @@ 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();
// we simply create a nice QColorGroup with a couple of fancy wood // we simply create a nice QColorGroup with a couple of fancy wood
// pixmaps here and apply to it all widgets // pixmaps here and apply to it all widgets
QImage img(button_xpm); QImage img(button_xpm);
QImage orig = img; QImage orig = img;
orig.detach(); orig.detach();
QPixmap button; QPixmap button;
button.convertFromImage(img); button.convertFromImage(img);
int i; int i;
for (i=0; i<img.numColors(); i++) { for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i); QRgb rgb = img.color(i);
QColor c(rgb); QColor c(rgb);
rgb = c.dark(120).rgb(); rgb = c.dark(120).rgb();
img.setColor(i,rgb); img.setColor(i,rgb);
} }
QPixmap mid; QPixmap mid;
mid.convertFromImage(img); mid.convertFromImage(img);
img = orig; img = orig;
img.detach(); img.detach();
for (i=0; i<img.numColors(); i++) { for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i); QRgb rgb = img.color(i);
QColor c(rgb); QColor c(rgb);
rgb = c.light().rgb(); rgb = c.light().rgb();
img.setColor(i,rgb); img.setColor(i,rgb);
} }
QPixmap light; QPixmap light;
light.convertFromImage(img); light.convertFromImage(img);
img = orig; img = orig;
img.detach(); img.detach();
for (i=0; i<img.numColors(); i++) { for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i); QRgb rgb = img.color(i);
QColor c(rgb); QColor c(rgb);
rgb = c.dark(180).rgb(); rgb = c.dark(180).rgb();
img.setColor(i,rgb); img.setColor(i,rgb);
} }
QPixmap dark; QPixmap dark;
dark.convertFromImage(img); dark.convertFromImage(img);
QImage bgimage(polish_xpm); QImage bgimage(polish_xpm);
QPixmap background; QPixmap background;
background.convertFromImage(bgimage); background.convertFromImage(bgimage);
img = bgimage; img = bgimage;
img.detach(); img.detach();
for (i=0; i<img.numColors(); i++) { for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i); QRgb rgb = img.color(i);
QColor c(rgb); QColor c(rgb);
rgb = c.dark(180).rgb(); rgb = c.dark(180).rgb();
img.setColor(i,rgb); img.setColor(i,rgb);
} }
sunkenDark = new QPixmap; sunkenDark = new QPixmap;
sunkenDark->convertFromImage(img); sunkenDark->convertFromImage(img);
img = bgimage; img = bgimage;
img.detach(); img.detach();
for (i=0; i<img.numColors(); i++) { for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i); QRgb rgb = img.color(i);
QColor c(rgb); QColor c(rgb);
rgb = c.light(130).rgb(); rgb = c.light(130).rgb();
img.setColor(i,rgb); img.setColor(i,rgb);
} }
sunkenLight= new QPixmap; sunkenLight= new QPixmap;
sunkenLight->convertFromImage(img); sunkenLight->convertFromImage(img);
QPalette op(QColor(212,140,95)); QPalette op(QColor(212,140,95));
// QPalette op(white); // QPalette op(white);
QColorGroup active (op.active().foreground(), QColorGroup active (op.active().foreground(),
QBrush(op.active().button(),button), QBrush(op.active().button(),button),
QBrush(op.active().light(), light), QBrush(op.active().light(), light),
QBrush(op.active().dark(), dark), QBrush(op.active().dark(), dark),
QBrush(op.active().mid(), mid), QBrush(op.active().mid(), mid),
op.active().text(), op.active().text(),
Qt::white, Qt::white,
QColor(236,182,120), QColor(236,182,120),
QBrush(op.active().background(), background) QBrush(op.active().background(), background)
); );
QColorGroup disabled (op.disabled().foreground(), QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().button(),button), QBrush(op.disabled().button(),button),
QBrush(op.disabled().light(), light), QBrush(op.disabled().light(), light),
op.disabled().dark(), op.disabled().dark(),
QBrush(op.disabled().mid(), mid), QBrush(op.disabled().mid(), mid),
op.disabled().text(), op.disabled().text(),
Qt::white, Qt::white,
QColor(236,182,120), QColor(236,182,120),
QBrush(op.disabled().background(), background) QBrush(op.disabled().background(), background)
); );
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 )
{ {
app->setPalette(oldPalette, TRUE); if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
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
// benefit from the nice pixmaps in the color group. // benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) { if ( !w->isTopLevel() ) {
if ( w->inherits("QPushButton") if ( w->inherits("QPushButton")
|| w->inherits("QToolButton") || w->inherits("QToolButton")
|| w->inherits("QComboBox") ) { || w->inherits("QComboBox") ) {
w->setAutoMask( TRUE ); w->setAutoMask( TRUE );
return; return;
}
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WindowOrigin );
}
} }
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WindowOrigin );
}
} }
void NorwegianWoodStyle::unPolish( QWidget* w) void NorwegianWoodStyle::unPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{ {
// the polish function sets some widgets to transparent mode and if (ceData.widgetObjectTypes.contains("QWidget")) {
// some to translate background mode in order to get the full QWidget *w = reinterpret_cast<QWidget*>(ptr);
// benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) { // the polish function sets some widgets to transparent mode and
if ( w->inherits("QPushButton") // some to translate background mode in order to get the full
|| w->inherits("QToolButton") // benefit from the nice pixmaps in the color group.
|| w->inherits("QComboBox") ) { if ( !w->isTopLevel() ) {
w->setAutoMask( FALSE ); if ( w->inherits("QPushButton")
return; || w->inherits("QToolButton")
|| w->inherits("QComboBox") ) {
w->setAutoMask( FALSE );
return;
}
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WidgetOrigin );
}
} }
if ( w->backgroundPixmap() )
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