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
*/
void MetalStyle::polish( QApplication *app)
void MetalStyle::applicationPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{
oldPalette = app->palette();
// we simply create a nice QColorGroup with a couple of fancy
// pixmaps here and apply to it all widgets
QFont f("times", app->font().pointSize() );
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 background(marble_xpm);
QPixmap dark( 1, 1 ); dark.fill( red.dark() );
QPixmap mid( stone1_xpm );
QPixmap light( stone1_xpm );//1, 1 ); light.fill( green );
QPalette op = app->palette();
QColor backCol( 227,227,227 );
// QPalette op(white);
QColorGroup active (op.active().foreground(),
QBrush(op.active().button(),button),
QBrush(op.active().light(), light),
QBrush(op.active().dark(), dark),
QBrush(op.active().mid(), mid),
op.active().text(),
Qt::white,
op.active().base(),// QColor(236,182,120),
QBrush(backCol, background)
);
active.setColor( QColorGroup::ButtonText, Qt::white );
active.setColor( QColorGroup::Shadow, Qt::black );
QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().button(),button),
QBrush(op.disabled().light(), light),
op.disabled().dark(),
QBrush(op.disabled().mid(), mid),
op.disabled().text(),
Qt::white,
op.disabled().base(),// QColor(236,182,120),
QBrush(backCol, background)
);
QPalette newPalette( active, disabled, active );
app->setPalette( newPalette, TRUE );
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
oldPalette = app->palette();
// we simply create a nice QColorGroup with a couple of fancy
// pixmaps here and apply to it all widgets
QFont f("times", app->font().pointSize() );
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 background(marble_xpm);
QPixmap dark( 1, 1 ); dark.fill( red.dark() );
QPixmap mid( stone1_xpm );
QPixmap light( stone1_xpm );//1, 1 ); light.fill( green );
QPalette op = app->palette();
QColor backCol( 227,227,227 );
// QPalette op(white);
QColorGroup active (op.active().foreground(),
QBrush(op.active().button(),button),
QBrush(op.active().light(), light),
QBrush(op.active().dark(), dark),
QBrush(op.active().mid(), mid),
op.active().text(),
Qt::white,
op.active().base(),// QColor(236,182,120),
QBrush(backCol, background)
);
active.setColor( QColorGroup::ButtonText, Qt::white );
active.setColor( QColorGroup::Shadow, Qt::black );
QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().button(),button),
QBrush(op.disabled().light(), light),
op.disabled().dark(),
QBrush(op.disabled().mid(), mid),
op.disabled().text(),
Qt::white,
op.disabled().base(),// QColor(236,182,120),
QBrush(backCol, background)
);
QPalette newPalette( active, disabled, active );
app->setPalette( newPalette, TRUE );
}
}
/*!
Reimplementation from QStyle
*/
void MetalStyle::unPolish( QApplication *app)
void MetalStyle::applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags, void *ptr )
{
app->setPalette(oldPalette, TRUE);
app->setFont( app->font(), TRUE );
if (ceData.widgetObjectTypes.contains("QApplication")) {
QApplication *app = reinterpret_cast<QApplication*>(ptr);
app->setPalette(oldPalette, TRUE);
app->setFont( app->font(), TRUE );
}
}
/*!
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
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::NoBackground );
return;
}
if ( !w->isTopLevel() ) {
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WindowOrigin );
}
// the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::NoBackground );
return;
}
if ( !w->isTopLevel() ) {
if ( w->backgroundPixmap() ) {
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
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::PaletteButton );
return;
}
if ( !w->isTopLevel() ) {
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WidgetOrigin );
}
// the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if (w->inherits("QPushButton")){
w->setBackgroundMode( QWidget::PaletteButton );
return;
}
if ( !w->isTopLevel() ) {
if ( w->backgroundPixmap() )
w->setBackgroundOrigin( QWidget::WidgetOrigin );
}
}
}
void MetalStyle::drawPrimitive( PrimitiveElement pe,
QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
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(),
flags & Style_Down, !( flags & Style_Horizontal ) );
drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowRight :PE_ArrowDown,
p, r, cg, flags, opt );
p, ceData, elementFlags, r, cg, flags, opt );
break;
case PE_ScrollBarSubLine:
drawMetalButton( p, r.x(), r.y(), r.width(), r.height(),
flags & Style_Down, !( flags & Style_Horizontal ) );
drawPrimitive( (flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp,
p, r, cg, flags, opt );
p, ceData, elementFlags, r, cg, flags, opt );
break;
@ -185,18 +201,20 @@ void MetalStyle::drawPrimitive( PrimitiveElement pe,
flags & Style_Horizontal );
break;
default:
QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt );
QWindowsStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt );
break;
}
}
void MetalStyle::drawControl( ControlElement element,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
switch( element ) {
case CE_PushButton:
@ -238,7 +256,7 @@ void MetalStyle::drawControl( ControlElement element,
flags |= Style_Down;
if ( !btn->isFlat() && !btn->isDown() )
flags |= Style_Raised;
drawPrimitive( PE_ButtonCommand, p,
drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags,
QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1),
cg, flags, opt );
@ -248,7 +266,7 @@ void MetalStyle::drawControl( ControlElement element,
flags |= Style_Enabled;
int dx = ( y1 - y2 - 4 ) / 3;
drawPrimitive( PE_ArrowDown, p,
drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(x2 - dx, dx, y1, y2 - y1),
cg, flags, opt );
}
@ -289,29 +307,31 @@ void MetalStyle::drawControl( ControlElement element,
break;
}
default:
QWindowsStyle::drawControl( element, p, widget, r, cg, how, opt );
QWindowsStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget );
break;
}
}
void MetalStyle::drawComplexControl( ComplexControl cc,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how,
SCFlags sub,
SCFlags subActive,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
switch ( cc ) {
case CC_Slider:
{
const QSlider *slider = ( const QSlider* ) widget;
QRect handle = querySubControlMetrics( CC_Slider, widget,
SC_SliderHandle, opt);
QRect handle = querySubControlMetrics( CC_Slider, ceData, elementFlags,
SC_SliderHandle, opt, widget);
if ( sub & SC_SliderGroove )
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how,
SC_SliderGroove, subActive, opt );
QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how,
SC_SliderGroove, subActive, opt, widget );
if ( (sub & SC_SliderHandle) && handle.isValid() )
drawMetalButton( p, handle.x(), handle.y(), handle.width(),
handle.height(), FALSE,
@ -328,7 +348,7 @@ void MetalStyle::drawComplexControl( ComplexControl cc,
&cg.brush( QColorGroup::Background ) );
drawMetalButton( p, r.x() + r.width() - 2 - 16, r.y() + 2, 16, r.height() - 4,
how & Style_Sunken, TRUE );
drawPrimitive( PE_ArrowDown, p,
drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect( r.x() + r.width() - 2 - 16 + 2,
r.y() + 2 + 2, 16 - 4, r.height() - 4 -4 ),
cg,
@ -337,8 +357,8 @@ void MetalStyle::drawComplexControl( ComplexControl cc,
break;
}
default:
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how, sub, subActive,
opt );
QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how, sub, subActive,
opt, widget );
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 ) {
case PM_MenuBarFrameWidth:
return 2;
default:
return QWindowsStyle::pixelMetric( metric, w );
return QWindowsStyle::pixelMetric( metric, ceData, elementFlags, w );
}
}

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

@ -769,156 +769,171 @@ NorwegianWoodStyle::NorwegianWoodStyle() : QWindowsStyle()
/*!
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();
// we simply create a nice QColorGroup with a couple of fancy wood
// pixmaps here and apply to it all widgets
QImage img(button_xpm);
QImage orig = img;
orig.detach();
QPixmap button;
button.convertFromImage(img);
int i;
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(120).rgb();
img.setColor(i,rgb);
}
QPixmap mid;
mid.convertFromImage(img);
img = orig;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.light().rgb();
img.setColor(i,rgb);
}
QPixmap light;
light.convertFromImage(img);
img = orig;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(180).rgb();
img.setColor(i,rgb);
}
QPixmap dark;
dark.convertFromImage(img);
QImage bgimage(polish_xpm);
QPixmap background;
background.convertFromImage(bgimage);
img = bgimage;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(180).rgb();
img.setColor(i,rgb);
}
sunkenDark = new QPixmap;
sunkenDark->convertFromImage(img);
img = bgimage;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.light(130).rgb();
img.setColor(i,rgb);
}
sunkenLight= new QPixmap;
sunkenLight->convertFromImage(img);
QPalette op(QColor(212,140,95));
// QPalette op(white);
QColorGroup active (op.active().foreground(),
QBrush(op.active().button(),button),
QBrush(op.active().light(), light),
QBrush(op.active().dark(), dark),
QBrush(op.active().mid(), mid),
op.active().text(),
Qt::white,
QColor(236,182,120),
QBrush(op.active().background(), background)
);
QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().button(),button),
QBrush(op.disabled().light(), light),
op.disabled().dark(),
QBrush(op.disabled().mid(), mid),
op.disabled().text(),
Qt::white,
QColor(236,182,120),
QBrush(op.disabled().background(), background)
);
app->setPalette(QPalette(active, disabled, active), TRUE );
oldPalette = app->palette();
// we simply create a nice QColorGroup with a couple of fancy wood
// pixmaps here and apply to it all widgets
QImage img(button_xpm);
QImage orig = img;
orig.detach();
QPixmap button;
button.convertFromImage(img);
int i;
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(120).rgb();
img.setColor(i,rgb);
}
QPixmap mid;
mid.convertFromImage(img);
img = orig;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.light().rgb();
img.setColor(i,rgb);
}
QPixmap light;
light.convertFromImage(img);
img = orig;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(180).rgb();
img.setColor(i,rgb);
}
QPixmap dark;
dark.convertFromImage(img);
QImage bgimage(polish_xpm);
QPixmap background;
background.convertFromImage(bgimage);
img = bgimage;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.dark(180).rgb();
img.setColor(i,rgb);
}
sunkenDark = new QPixmap;
sunkenDark->convertFromImage(img);
img = bgimage;
img.detach();
for (i=0; i<img.numColors(); i++) {
QRgb rgb = img.color(i);
QColor c(rgb);
rgb = c.light(130).rgb();
img.setColor(i,rgb);
}
sunkenLight= new QPixmap;
sunkenLight->convertFromImage(img);
QPalette op(QColor(212,140,95));
// QPalette op(white);
QColorGroup active (op.active().foreground(),
QBrush(op.active().button(),button),
QBrush(op.active().light(), light),
QBrush(op.active().dark(), dark),
QBrush(op.active().mid(), mid),
op.active().text(),
Qt::white,
QColor(236,182,120),
QBrush(op.active().background(), background)
);
QColorGroup disabled (op.disabled().foreground(),
QBrush(op.disabled().button(),button),
QBrush(op.disabled().light(), light),
op.disabled().dark(),
QBrush(op.disabled().mid(), mid),
op.disabled().text(),
Qt::white,
QColor(236,182,120),
QBrush(op.disabled().background(), background)
);
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
*/
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
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) {
if ( w->inherits("QPushButton")
|| w->inherits("QToolButton")
|| w->inherits("QComboBox") ) {
w->setAutoMask( TRUE );
return;
// the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) {
if ( w->inherits("QPushButton")
|| w->inherits("QToolButton")
|| w->inherits("QComboBox") ) {
w->setAutoMask( TRUE );
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
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) {
if ( w->inherits("QPushButton")
|| w->inherits("QToolButton")
|| w->inherits("QComboBox") ) {
w->setAutoMask( FALSE );
return;
if (ceData.widgetObjectTypes.contains("QWidget")) {
QWidget *w = reinterpret_cast<QWidget*>(ptr);
// the polish function sets some widgets to transparent mode and
// some to translate background mode in order to get the full
// benefit from the nice pixmaps in the color group.
if ( !w->isTopLevel() ) {
if ( w->inherits("QPushButton")
|| 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,
QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags flags, const QStyleOption& opt ) const
@ -970,28 +985,30 @@ void NorwegianWoodStyle::drawPrimitive( PrimitiveElement pe,
}
case PE_ScrollBarAddLine:
if ( flags & Style_Horizontal )
drawSemicircleButton( p, r, PointRight, flags & Style_Down, cg );
drawSemicircleButton( p, ceData, elementFlags, r, PointRight, flags & Style_Down, cg );
else
drawSemicircleButton( p, r, PointDown, flags & Style_Down, cg );
drawSemicircleButton( p, ceData, elementFlags, r, PointDown, flags & Style_Down, cg );
break;
case PE_ScrollBarSubLine:
if ( flags & Style_Horizontal )
drawSemicircleButton( p, r, PointLeft, flags & Style_Down, cg );
drawSemicircleButton( p, ceData, elementFlags, r, PointLeft, flags & Style_Down, cg );
else
drawSemicircleButton( p, r, PointUp, flags & Style_Down, cg );
drawSemicircleButton( p, ceData, elementFlags, r, PointUp, flags & Style_Down, cg );
break;
default:
QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt );
QWindowsStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt );
break;
}
}
void NorwegianWoodStyle::drawControl( ControlElement element,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how, const QStyleOption& opt ) const
SFlags how, const QStyleOption& opt,
const QWidget *widget ) const
{
switch( element ) {
case CE_PushButton:
@ -1033,7 +1050,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
y2 -= 2;
}
drawPrimitive( PE_ButtonCommand, p,
drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags,
QRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1),
myCg, flags, opt );
@ -1052,7 +1069,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
flags = Style_Default;
if ( btn->isEnabled() )
flags |= Style_Enabled;
drawPrimitive( PE_ArrowDown, p,
drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect( x2 - dx, dx, y1, y2 - y1),
myCg, flags, opt );
}
@ -1092,16 +1109,18 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
break;
}
default:
QWindowsStyle::drawControl( element, p, widget, r, cg, how, opt );
QWindowsStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget );
break;
}
}
void NorwegianWoodStyle::drawControlMask( ControlElement element,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
switch( element ) {
case CE_PushButton:
@ -1113,20 +1132,22 @@ void NorwegianWoodStyle::drawControlMask( ControlElement element,
break;
}
default:
QWindowsStyle::drawControlMask( element, p, widget, r, opt );
QWindowsStyle::drawControlMask( element, p, ceData, elementFlags, r, opt, widget );
break;
}
}
void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how,
SCFlags sub,
SCFlags subActive,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
switch( cc ) {
case CC_ComboBox:
@ -1135,15 +1156,15 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
cmb = (const QComboBox*)widget;
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 );
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" );
if ( mstyle )
mstyle->drawPrimitive( PE_ArrowDown, p,
mstyle->drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(ax, ay, awh, awh), cg, how, opt );
else
drawPrimitive( PE_ArrowDown, p,
drawPrimitive( PE_ArrowDown, p, ceData, elementFlags,
QRect(ax, ay, awh, awh), cg, how, opt );
QPen oldPen = p->pen();
@ -1156,8 +1177,8 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
p->setPen( oldPen );
if ( cmb->editable() ) {
QRect r( querySubControlMetrics(CC_ComboBox, widget,
SC_ComboBoxEditField, opt) );
QRect r( querySubControlMetrics(CC_ComboBox, ceData, elementFlags,
SC_ComboBoxEditField, opt, widget) );
qDrawShadePanel( p, r, cg, TRUE, 1,
&cg.brush(QColorGroup::Button) );
}
@ -1165,17 +1186,19 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
break;
}
default:
QWindowsStyle::drawComplexControl( cc, p, widget, r, cg, how,
sub, subActive, opt );
QWindowsStyle::drawComplexControl( cc, p, ceData, elementFlags, r, cg, how,
sub, subActive, opt, widget );
break;
}
}
void NorwegianWoodStyle::drawComplexControlMask( ComplexControl control,
QPainter *p,
const QWidget *widget,
const QStyleControlElementData ceData,
const ControlElementFlags elementFlags,
const QRect &r,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
switch ( control ) {
case CC_ComboBox:
@ -1187,15 +1210,17 @@ void NorwegianWoodStyle::drawComplexControlMask( ComplexControl control,
break;
}
default:
QWindowsStyle::drawComplexControlMask( control, p, widget, r, opt );
QWindowsStyle::drawComplexControlMask( control, p, ceData, elementFlags, r, opt, widget );
break;
}
}
QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
SubControl sc,
const QStyleOption& opt ) const
const QStyleOption& opt,
const QWidget *widget ) const
{
QRect rect;
switch ( control ) {
@ -1204,15 +1229,15 @@ QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
switch( sc ) {
case SC_ComboBoxEditField:
{
rect = subRect( SR_PushButtonContents, widget );
rect = subRect( SR_PushButtonContents, ceData, elementFlags, widget );
int ew = get_combo_extra_width( rect.height(), 0 );
rect.setRect( rect.x() + 1, rect.y() + 1,
rect.width() - 2 - ew, rect.height() - 2 );
break;
}
default:
rect = QWindowsStyle::querySubControlMetrics( control, widget,
sc, opt );
rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt, widget );
break;
}
break;
@ -1237,21 +1262,21 @@ QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
rect.setRect( b, b, w - 2 * b, w - 2 * b );
break;
default:
rect = QWindowsStyle::querySubControlMetrics( control, widget,
sc, opt );
rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt, widget );
break;
}
break;
}
default:
rect = QWindowsStyle::querySubControlMetrics( control, widget,
sc, opt );
rect = QWindowsStyle::querySubControlMetrics( control, ceData, elementFlags,
sc, opt, widget );
break;
}
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;
switch ( sr ) {
@ -1276,14 +1301,14 @@ QRect NorwegianWoodStyle::subRect( SubRect sr, const QWidget * widget ) const
}
case SR_ComboBoxFocusRect:
{
r = subRect( SR_PushButtonContents, widget );
r = subRect( SR_PushButtonContents, ceData, elementFlags, widget );
int ew = get_combo_extra_width( r.height() );
r.setRect( r.x() + 1, r.y() + 1, r.width() - 2 - ew,
r.height() - 2 );
break;
}
default:
r = QWindowsStyle::subRect( sr, widget );
r = QWindowsStyle::subRect( sr, ceData, elementFlags, widget );
break;
}
return r;
@ -1358,11 +1383,12 @@ static void get_combo_parameters( const QRect &r,
static inline int buttonthickness( int d )
{ 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,
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 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:
NorwegianWoodStyle();
void polish( QApplication*);
void polish( QWidget* );
void unPolish( QWidget* );
void unPolish( QApplication*);
void applicationPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void polish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void unPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void applicationUnPolish( QStyleControlElementData ceData, ControlElementFlags elementFlags, void * );
void drawPrimitive( PrimitiveElement pe,
QPainter *p,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags flags = Style_Default,
@ -40,44 +42,54 @@ public:
void drawControl( ControlElement element,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how = Style_Default,
const QStyleOption& = QStyleOption::Default ) const;
const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawControlMask( ControlElement element,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QStyleOption& = QStyleOption::Default ) const;
const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawComplexControl( ComplexControl cc,
QPainter *p,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
const QRect &r,
const QColorGroup &cg,
SFlags how = Style_Default,
SCFlags sub = SC_All,
SCFlags subActive = SC_None,
const QStyleOption& = QStyleOption::Default ) const;
const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
void drawComplexControlMask( ComplexControl control,
QPainter *p,
const QWidget *widget,
const QStyleControlElementData ceData,
const ControlElementFlags elementFlags,
const QRect &r,
const QStyleOption& = QStyleOption::Default ) const;
const QStyleOption& = QStyleOption::Default,
const QWidget *widget = 0 ) const;
QRect querySubControlMetrics( ComplexControl control,
const QWidget *widget,
QStyleControlElementData ceData,
ControlElementFlags elementFlags,
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:
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;
QPalette oldPalette;
QPixmap *sunkenDark;

Loading…
Cancel
Save