diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-08-09 15:32:06 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-08-09 15:32:06 -0500 |
commit | d24053184c51974368634902f1c0e862c811098b (patch) | |
tree | b7429f5319e15d2db2fb056e223c84ad0e05df89 /examples/themes/metal.cpp | |
parent | 8805afa8c607ac6028207434f78a7cd90a9df64b (diff) | |
download | qt3-d24053184c51974368634902f1c0e862c811098b.tar.gz qt3-d24053184c51974368634902f1c0e862c811098b.zip |
Update example styles to new style API
Diffstat (limited to 'examples/themes/metal.cpp')
-rw-r--r-- | examples/themes/metal.cpp | 228 |
1 files changed, 124 insertions, 104 deletions
diff --git a/examples/themes/metal.cpp b/examples/themes/metal.cpp index 45c30d6..e772d22 100644 --- a/examples/themes/metal.cpp +++ b/examples/themes/metal.cpp @@ -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 ); } } |