@ -769,163 +769,146 @@ NorwegianWoodStyle::NorwegianWoodStyle() : QWindowsStyle()
/*!
Reimplementation from QStyle
*/
void NorwegianWoodStyle : : applicationPolish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr )
void NorwegianWoodStyle : : applicationPolish ( QStyleControlElementData ceData , ControlElementFlags elementFlags , 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 = ceData . 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 )
) ;
applicationActionRequest ( ceData , elementFlags , ptr , AAR_SetPalette , QStyleApplicationActionRequestData ( QPalette ( active , disabled , active ) , TRUE ) ) ;
}
void NorwegianWoodStyle : : applicationUnPolish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr )
void NorwegianWoodStyle : : applicationUnPolish ( QStyleControlElementData ceData , ControlElementFlags elementFlags , void * ptr )
{
if ( ceData . widgetObjectTypes . contains ( " QApplication " ) ) {
QApplication * app = reinterpret_cast < QApplication * > ( ptr ) ;
app - > setPalette ( oldPalette , TRUE ) ;
}
applicationActionRequest ( ceData , elementFlags , ptr , AAR_SetPalette , QStyleApplicationActionRequestData ( oldPalette , TRUE ) ) ;
}
/*!
Reimplementation from QStyle
*/
void NorwegianWoodStyle : : polish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr )
void NorwegianWoodStyle : : polish ( QStyleControlElementData ceData , ControlElementFlags elementFlags , 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.
// 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 ) ;
if ( ! ( elementFlags & CEF_IsTopLevel ) ) {
if ( ( ceData . widgetObjectTypes . contains ( " QPushButton " ) ) | | ( ceData . widgetObjectTypes . contains ( " QToolButton " ) ) | | ( ceData . widgetObjectTypes . contains ( " QComboBox " ) ) ) {
widgetActionRequest ( ceData , elementFlags , ptr , WAR_SetAutoMask ) ;
return ;
}
if ( w - > backgroundPixmap ( ) )
w - > setBackgroundOrigin ( QWidget : : WindowOrigin ) ;
}
if ( ! ceData . bgPixmap . isNull ( ) ) {
widgetActionRequest ( ceData , elementFlags , ptr , WAR_SetBackgroundOrigin , QStyleWidgetActionRequestData ( QWidget : : WindowOrigin ) ) ;
}
}
}
void NorwegianWoodStyle : : unPolish ( QStyleControlElementData ceData , ControlElementFlags , void * ptr )
void NorwegianWoodStyle : : unPolish ( QStyleControlElementData ceData , ControlElementFlags elementFlags , 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.
// 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 ) ;
if ( ! ( elementFlags & CEF_IsTopLevel ) ) {
if ( ( ceData . widgetObjectTypes . contains ( " QPushButton " ) ) | | ( ceData . widgetObjectTypes . contains ( " QToolButton " ) ) | | ( ceData . widgetObjectTypes . contains ( " QComboBox " ) ) ) {
widgetActionRequest ( ceData , elementFlags , ptr , WAR_UnSetAutoMask ) ;
return ;
}
if ( w - > backgroundPixmap ( ) )
w - > setBackgroundOrigin ( QWidget : : WidgetOrigin ) ;
}
if ( ! ceData . bgPixmap . isNull ( ) ) {
widgetActionRequest ( ceData , elementFlags , ptr , WAR_SetBackgroundOrigin , QStyleWidgetActionRequestData ( QWidget : : WidgetOrigin ) ) ;
}
}
}
@ -1013,19 +996,17 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
switch ( element ) {
case CE_PushButton :
{
const QPushButton * btn ;
btn = ( const QPushButton * ) widget ;
QColorGroup myCg ( cg ) ;
SFlags flags = Style_Default ;
if ( btn- > isOn ( ) )
if ( elementFlags & CEF_IsOn )
flags | = Style_On ;
if ( btn- > isDown ( ) )
if ( elementFlags & CEF_IsDown )
flags | = Style_Down ;
if ( btn - > isOn ( ) | | btn - > isDown ( ) )
if ( ( elementFlags & CEF_IsOn ) | | ( elementFlags & CEF_IsDown ) )
flags | = Style_Sunken ;
if ( btn- > isDefault ( ) )
if ( elementFlags & CEF_IsDefault )
flags | = Style_Default ;
if ( ! btn - > isFlat ( ) & & ! ( flags & Style_Down ) )
if ( ! ( elementFlags & CEF_IsFlat ) & & ! ( flags & Style_Down ) )
flags | = Style_Raised ;
int x1 , y1 , x2 , y2 ;
@ -1035,15 +1016,15 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
p - > setBrush ( QBrush ( cg . button ( ) , NoBrush ) ) ;
QBrush fill ;
if ( btn- > isDown ( ) )
if ( elementFlags & CEF_IsDown )
fill = cg . brush ( QColorGroup : : Mid ) ;
else if ( btn- > isOn ( ) )
else if ( elementFlags & CEF_IsOn )
fill = QBrush ( cg . mid ( ) , Dense4Pattern ) ;
else
fill = cg . brush ( QColorGroup : : Button ) ;
myCg . setBrush ( QColorGroup : : Mid , fill ) ;
if ( btn- > isDefault ( ) ) {
if ( elementFlags & CEF_IsDefault ) {
x1 + = 2 ;
y1 + = 2 ;
x2 - = 2 ;
@ -1054,7 +1035,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
QRect ( x1 , y1 , x2 - x1 + 1 , y2 - y1 + 1 ) ,
myCg , flags , opt ) ;
if ( btn- > isDefault ( ) ) {
if ( elementFlags & CEF_IsDefault ) {
QPen pen ( Qt : : black , 4 ) ;
pen . setCapStyle ( Qt : : RoundCap ) ;
pen . setJoinStyle ( Qt : : RoundJoin ) ;
@ -1062,12 +1043,12 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
drawroundrect ( p , x1 - 1 , y1 - 1 , x2 - x1 + 3 , y2 - y1 + 3 , 8 ) ;
}
if ( btn- > isMenuButton ( ) ) {
if ( elementFlags & CEF_IsMenuWidget ) {
int dx = ( y1 - y2 - 4 ) / 3 ;
// reset the flags
flags = Style_Default ;
if ( btn- > isEnabled ( ) )
if ( elementFlags & CEF_IsEnabled )
flags | = Style_Enabled ;
drawPrimitive ( PE_ArrowDown , p , ceData , elementFlags ,
QRect ( x2 - dx , dx , y1 , y2 - y1 ) ,
@ -1080,8 +1061,6 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
}
case CE_PushButtonLabel :
{
const QPushButton * btn ;
btn = ( const QPushButton * ) widget ;
int x , y , w , h ;
r . rect ( & x , & y , & w , & h ) ;
@ -1089,7 +1068,7 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
r . coords ( & x1 , & y1 , & x2 , & y2 ) ;
int dx = 0 ;
int dy = 0 ;
if ( btn- > isMenuButton ( ) )
if ( elementFlags & CEF_IsMenuWidget )
dx = ( y2 - y1 ) / 3 ;
if ( dx | | dy )
p - > translate ( dx , dy ) ;
@ -1100,9 +1079,9 @@ void NorwegianWoodStyle::drawControl( ControlElement element,
h - = 4 ;
drawItem ( p , QRect ( x , y , w , h ) ,
AlignCenter | ShowPrefix ,
cg , btn - > isEnabled ( ) ,
btn - > pixmap ( ) , btn - > text ( ) , - 1 ,
( btn - > isDown ( ) | | btn - > isOn ( ) ) ? & cg . brightText ( )
cg , ( elementFlags & CEF_IsEnabled ) ,
( ceData . fgPixmap . isNull ( ) ) ? NULL : & ceData . fgPixmap , ceData . text , - 1 ,
( ( elementFlags & CEF_IsDown ) | | ( elementFlags & CEF_IsOn ) ) ? & cg . brightText ( )
: & cg . buttonText ( ) ) ;
if ( dx | | dy )
p - > translate ( - dx , - dy ) ;
@ -1152,9 +1131,6 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
switch ( cc ) {
case CC_ComboBox :
{
const QComboBox * cmb ;
cmb = ( const QComboBox * ) widget ;
int awh , ax , ay , sh , sy , dh , ew ;
get_combo_parameters ( subRect ( SR_PushButtonContents , ceData , elementFlags , widget ) ,
ew , awh , ax , ay , sh , dh , sy ) ;
@ -1176,7 +1152,7 @@ void NorwegianWoodStyle::drawComplexControl( ComplexControl cc,
p - > drawLine ( ax + awh - 1 , sy + 1 , ax + awh - 1 , sy + sh - 1 ) ;
p - > setPen ( oldPen ) ;
if ( cmb- > editable ( ) ) {
if ( elementFlags & CEF_IsEditable ) {
QRect r ( querySubControlMetrics ( CC_ComboBox , ceData , elementFlags ,
SC_ComboBoxEditField , opt , widget ) ) ;
qDrawShadePanel ( p , r , cg , TRUE , 1 ,
@ -1244,19 +1220,17 @@ QRect NorwegianWoodStyle::querySubControlMetrics( ComplexControl control,
}
case CC_ScrollBar :
{
const QScrollBar * sb ;
sb = ( const QScrollBar * ) widget ;
bool horz = sb - > orientation ( ) = = QScrollBar : : Horizontal ;
bool horz = ceData . orientation = = QScrollBar : : Horizontal ;
int b = 2 ;
int w = horz ? sb- > height ( ) : sb - > width ( ) ;
int w = horz ? ceData . rect . height ( ) : ceData . rect . width ( ) ;
switch ( sc ) {
case SC_ScrollBarAddLine :
rect . setRect ( b , b , w - 2 * b , w - 2 * b ) ;
if ( horz )
rect . moveBy ( sb- > width ( ) - w , 0 ) ;
rect . moveBy ( ceData. rect . width ( ) - w , 0 ) ;
else
rect . moveBy ( 0 , sb- > height ( ) - w ) ;
rect . moveBy ( 0 , ceData. rect . height ( ) - w ) ;
break ;
case SC_ScrollBarSubLine :
rect . setRect ( b , b , w - 2 * b , w - 2 * b ) ;
@ -1282,9 +1256,7 @@ QRect NorwegianWoodStyle::subRect( SubRect sr, const QStyleControlElementData ce
switch ( sr ) {
case SR_PushButtonContents :
{
const QPushButton * btn ;
btn = ( const QPushButton * ) widget ;
r = btn - > rect ( ) ;
r = ceData . rect ;
int d = QMIN ( r . width ( ) , r . height ( ) ) / 2 ;
int b = buttonthickness ( d ) ;