diff --git a/clients/nitrogen/nitrogen.cpp b/clients/nitrogen/nitrogen.cpp index 85a537c206..7ee6ee6ad1 100644 --- a/clients/nitrogen/nitrogen.cpp +++ b/clients/nitrogen/nitrogen.cpp @@ -227,7 +227,7 @@ namespace Nitrogen if( iter->mask() & NitrogenException::DrawSeparator ) configuration.setDrawSeparator( iter->drawSeparator() ); if( iter->mask() & NitrogenException::ShowStripes ) configuration.setShowStripes( iter->showStripes() ); if( iter->mask() & NitrogenException::OverwriteColors ) configuration.setOverwriteColors( iter->overwriteColors() ); - if( iter->mask() & NitrogenException::DrawSizeGrip ) configuration.setDrawSizeGrip( iter->drawSizeGrip() ); + if( iter->mask() & NitrogenException::SizeGripMode ) configuration.setSizeGripMode( iter->sizeGripMode() ); return configuration; diff --git a/clients/nitrogen/nitrogenconfiguration.cpp b/clients/nitrogen/nitrogenconfiguration.cpp index b207ea5dc1..90430e3e40 100644 --- a/clients/nitrogen/nitrogenconfiguration.cpp +++ b/clients/nitrogen/nitrogenconfiguration.cpp @@ -41,10 +41,10 @@ namespace Nitrogen buttonType_( ButtonKde43 ), frameBorder_( BorderDefault ), blendColor_( RadialBlending ), + sizeGripMode_( SizeGripWhenNeeded ), showStripes_( true ), drawSeparator_( true ), overwriteColors_( true ), - drawSizeGrip_( false ), useOxygenShadows_( true ) {} @@ -79,6 +79,11 @@ namespace Nitrogen setBlendColor( blendColor( group.readEntry( NitrogenConfig::BLEND_COLOR, defaultConfiguration.blendColorName( false ) ), false ) ); + + // size grip + setSizeGripMode( sizeGripMode( + group.readEntry( NitrogenConfig::SIZE_GRIP_MODE, + defaultConfiguration.sizeGripModeName( false ) ), false ) ); // show stripes setShowStripes( group.readEntry( @@ -95,11 +100,6 @@ namespace Nitrogen NitrogenConfig::OVERWRITE_COLORS, defaultConfiguration.overwriteColors() ) ); - // size grip - setDrawSizeGrip( group.readEntry( - NitrogenConfig::DRAW_SIZE_GRIP, - defaultConfiguration.drawSizeGrip() ) ); - // oxygen shadows setUseOxygenShadows( group.readEntry( NitrogenConfig::USE_OXYGEN_SHADOWS, @@ -115,11 +115,11 @@ namespace Nitrogen group.writeEntry( NitrogenConfig::BUTTON_TYPE, buttonTypeName( false ) ); group.writeEntry( NitrogenConfig::BLEND_COLOR, blendColorName( false ) ); group.writeEntry( NitrogenConfig::FRAME_BORDER, frameBorderName( false ) ); + group.writeEntry( NitrogenConfig::SIZE_GRIP_MODE, sizeGripModeName( false ) ); group.writeEntry( NitrogenConfig::SHOW_STRIPES, showStripes() ); group.writeEntry( NitrogenConfig::DRAW_SEPARATOR, drawSeparator() ); group.writeEntry( NitrogenConfig::OVERWRITE_COLORS, overwriteColors() ); - group.writeEntry( NitrogenConfig::DRAW_SIZE_GRIP, drawSizeGrip() ); group.writeEntry( NitrogenConfig::USE_OXYGEN_SHADOWS, useOxygenShadows() ); } @@ -271,6 +271,30 @@ namespace Nitrogen else return NitrogenConfiguration().blendColor(); } + //__________________________________________________ + QString NitrogenConfiguration::sizeGripModeName( SizeGripMode value, bool translated ) + { + const char* out; + switch( value ) + { + case SizeGripAlways: out = "Always Show Extra Size Grip"; break; + case SizeGripNever: out = "Always Hide Extra Size Grip"; break; + case SizeGripWhenNeeded: out = "Show Extra Size Grip When Needed"; break; + default: return NitrogenConfiguration().sizeGripModeName( translated ); + } + + return translated ? i18n(out):out; + + } + + //__________________________________________________ + NitrogenConfiguration::SizeGripMode NitrogenConfiguration::sizeGripMode( QString value, bool translated ) + { + if( value == sizeGripModeName( SizeGripAlways, translated ) ) return SizeGripAlways; + else if( value == sizeGripModeName( SizeGripNever, translated ) ) return SizeGripNever; + else if( value == sizeGripModeName( SizeGripWhenNeeded, translated ) ) return SizeGripWhenNeeded; + else return NitrogenConfiguration().sizeGripMode(); + } //________________________________________________________ bool NitrogenConfiguration::operator == (const NitrogenConfiguration& other ) const @@ -282,10 +306,10 @@ namespace Nitrogen buttonType() == other.buttonType() && frameBorder() == other.frameBorder() && blendColor() == other.blendColor() && + sizeGripMode() == other.sizeGripMode() && showStripes() == other.showStripes() && drawSeparator() == other.drawSeparator() && overwriteColors() == other.overwriteColors() && - drawSizeGrip() == other.drawSizeGrip() && useOxygenShadows() == other.useOxygenShadows(); } diff --git a/clients/nitrogen/nitrogenconfiguration.h b/clients/nitrogen/nitrogenconfiguration.h index 1668c9a960..5b913d2f88 100644 --- a/clients/nitrogen/nitrogenconfiguration.h +++ b/clients/nitrogen/nitrogenconfiguration.h @@ -39,7 +39,7 @@ namespace NitrogenConfig static const QString OVERWRITE_COLORS = "OverwriteColors"; static const QString FRAME_BORDER = "FrameBorder"; static const QString BLEND_COLOR = "BlendColor"; - static const QString DRAW_SIZE_GRIP = "DrawSizeGrip"; + static const QString SIZE_GRIP_MODE = "SizeGripMode"; static const QString USE_OXYGEN_SHADOWS = "UseOxygenShadows"; } @@ -87,6 +87,14 @@ namespace Nitrogen RadialBlending }; + //! size grip mode + enum SizeGripMode + { + SizeGripAlways, + SizeGripNever, + SizeGripWhenNeeded + }; + //! default constructor NitrogenConfiguration( void ); @@ -201,6 +209,34 @@ namespace Nitrogen //@} + //!@name size grip + //@{ + + static QString sizeGripModeName( SizeGripMode, bool translated ); + static SizeGripMode sizeGripMode( QString, bool translated ); + + virtual SizeGripMode sizeGripMode( void ) const + { return sizeGripMode_; } + + virtual QString sizeGripModeName( bool translated ) const + { return sizeGripModeName( sizeGripMode(), translated ); } + + virtual void setSizeGripMode( SizeGripMode value ) + { sizeGripMode_ = value; } + + virtual void setSizeGripMode( QString value, bool translated ) + { sizeGripMode_ = sizeGripMode( value, translated ); } + + //! draw size grip + virtual bool drawSizeGrip( void ) const + { + return + sizeGripMode() == SizeGripAlways || + (sizeGripMode() == SizeGripWhenNeeded && frameBorder() == BorderNone ); + } + + //@} + //! stripes virtual bool showStripes( void ) const { return showStripes_; } @@ -225,14 +261,6 @@ namespace Nitrogen virtual void setOverwriteColors( bool value ) { overwriteColors_ = value; } - //! draw size grip - virtual bool drawSizeGrip( void ) const - { return drawSizeGrip_; } - - //! draw size grip - virtual void setDrawSizeGrip( bool value ) - { drawSizeGrip_ = value; } - //! oxygen shadows virtual bool useOxygenShadows( void ) const { return useOxygenShadows_; } @@ -257,6 +285,9 @@ namespace Nitrogen //! frame border BlendColorType blendColor_; + + //! size grip mode + SizeGripMode sizeGripMode_; //! stripes bool showStripes_; @@ -267,9 +298,6 @@ namespace Nitrogen //! overwrite colors bool overwriteColors_; - //! size grip - bool drawSizeGrip_; - //! oxygen shadows bool useOxygenShadows_; diff --git a/clients/nitrogen/nitrogenexception.h b/clients/nitrogen/nitrogenexception.h index efbf5b3b04..39ed6be912 100644 --- a/clients/nitrogen/nitrogenexception.h +++ b/clients/nitrogen/nitrogenexception.h @@ -67,8 +67,8 @@ namespace Nitrogen OverwriteColors = 1<<3, FrameBorder = 1<<4, BlendColor = 1<<5, - DrawSizeGrip = 1<<6, - All = TitleAlignment|ShowStripes|DrawSeparator|OverwriteColors|FrameBorder|BlendColor|DrawSizeGrip + SizeGripMode = 1<<6, + All = TitleAlignment|ShowStripes|DrawSeparator|OverwriteColors|FrameBorder|BlendColor|SizeGripMode }; //! constructor