#ifndef oxygenconfiguration_h #define oxygenconfiguration_h ////////////////////////////////////////////////////////////////////////////// // oxygenconfiguration.h // decoration configuration // ------------------- // // Copyright (c) 2009 Hugo Pereira Da Costa // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS // IN THE SOFTWARE. ////////////////////////////////////////////////////////////////////////////// #include namespace OxygenConfig { static const QString TITLE_ALIGNMENT = "TitleAlignment"; static const QString BUTTON_SIZE = "ButtonSize"; static const QString DRAW_SEPARATOR = "DrawSeparator"; static const QString SEPARATOR_ACTIVE_ONLY = "SeparatorActiveOnly"; static const QString DRAW_TITLE_OUTLINE = "DrawTitleOutline"; static const QString FRAME_BORDER = "FrameBorder"; static const QString BLEND_COLOR = "BlendColor"; static const QString SIZE_GRIP_MODE = "SizeGripMode"; static const QString USE_DROP_SHADOWS = "UseDropShadows"; static const QString USE_OXYGEN_SHADOWS = "UseOxygenShadows"; static const QString HIDE_TITLEBAR = "HideTitleBar"; static const QString USE_ANIMATIONS = "UseAnimations"; static const QString ANIMATE_TITLE_CHANGE = "AnimateTitleChange"; static const QString ANIMATIONS_DURATION = "AnimationsDuration"; static const QString TABS_ENABLED = "TabsEnabled"; static const QString NARROW_BUTTON_SPACING = "UseNarrowButtonSpacing"; static const QString SHADOW_MODE = "ShadowMode"; static const QString SHADOW_CACHE_MODE = "ShadowCacheMode"; } namespace Oxygen { // forward declaration class Exception; //! stores all configuration options needed for decoration appearance class Configuration { public: //! button size enumeration enum ButtonSize { ButtonSmall = 18, ButtonDefault = 20, ButtonLarge = 24, ButtonVeryLarge = 32, ButtonHuge = 48 }; //! frame border enumeration enum FrameBorder { BorderNone = 0, BorderNoSide = 1, BorderTiny = 2, BorderDefault = 4, BorderLarge = 8, BorderVeryLarge = 12, BorderHuge = 18, BorderVeryHuge = 27, BorderOversized = 40 }; //! blend color enumeration enum BlendColorType { NoBlending, RadialBlending }; //! size grip mode enum SizeGripMode { SizeGripNever, SizeGripWhenNeeded }; //! shadow mode enum ShadowMode { OxygenShadows, KWinShadows, NoShadows }; //! shadow cache mode enum ShadowCacheMode { //! no shadow cache CacheDisabled, //! shadow cache depends on animation duration CacheVariable, //! shadow cache has maximum size CacheMaximum }; //! decide when separator is to be drawn enum SeparatorMode { //! never SeparatorNever, //! active window only SeparatorActive, //! always SeparatorAlways }; //! default constructor Configuration( void ); //! constructor from KConfig Configuration( KConfigGroup ); //! destructor virtual ~Configuration( void ) {} //! equal to operator bool operator == ( const Configuration& ) const; //! propagate all features found in exception mask to this configuration void readException( const Exception& ); //! write to kconfig group virtual void write( KConfigGroup& ) const; //!@name title alignment //@{ static QString titleAlignmentName( Qt::Alignment, bool translated ); static Qt::Alignment titleAlignment( QString, bool translated ); virtual Qt::Alignment titleAlignment() const { return titleAlignment_; } virtual QString titleAlignmentName( bool translated ) const { return titleAlignmentName( titleAlignment(), translated ); } virtual void setTitleAlignment( Qt::Alignment value ) { titleAlignment_ = value; } virtual void setTitleAlignment( QString value, bool translated ) { titleAlignment_ = titleAlignment( value, translated ); } //@} //!@name button size //@{ static QString buttonSizeName( ButtonSize, bool translated ); static ButtonSize buttonSize( QString, bool translated ); static int iconScale( ButtonSize ); virtual ButtonSize buttonSize( void ) const { return buttonSize_; } virtual int iconScale( void ) const { return iconScale( buttonSize() ); } virtual QString buttonSizeName( bool translated ) const { return buttonSizeName( buttonSize(), translated ); } virtual void setButtonSize( ButtonSize value ) { buttonSize_ = value; } virtual bool useNarrowButtonSpacing( void ) const { return useNarrowButtonSpacing_; } virtual void setUseNarrowButtonSpacing( bool value ) { useNarrowButtonSpacing_ = value; } //@} //!@name shadow mode //@{ static QString shadowModeName( ShadowMode, bool translated ); static ShadowMode shadowMode( QString, bool translated ); QString shadowModeName( bool translated ) const { return shadowModeName( shadowMode(), translated ); } void setShadowMode( ShadowMode mode ) { shadowMode_ = mode; } ShadowMode shadowMode( void ) const { return shadowMode_; } //@] //!@name shadow mode cache mode //@{ static QString shadowCacheModeName( ShadowCacheMode, bool translated ); static ShadowCacheMode shadowCacheMode( QString, bool translated ); QString shadowCacheModeName( bool translated ) const { return shadowCacheModeName( shadowCacheMode(), translated ); } void setShadowCacheMode( ShadowCacheMode mode ) { shadowCacheMode_ = mode; } ShadowCacheMode shadowCacheMode( void ) const { return shadowCacheMode_; } //@] //!@name frame border //@{ static QString frameBorderName( FrameBorder, bool translated ); static FrameBorder frameBorder( QString, bool translated ); virtual FrameBorder frameBorder() const { return frameBorder_; } virtual QString frameBorderName( bool translated ) const { return frameBorderName( frameBorder(), translated ); } virtual void setFrameBorder( FrameBorder value ) { frameBorder_ = value; } virtual void setFrameBorder( QString value, bool translated ) { frameBorder_ = frameBorder( value, translated ); } //@} //!@name blend color //@{ static QString blendColorName( BlendColorType, bool translated ); static BlendColorType blendColor( QString, bool translated ); virtual BlendColorType blendColor( void ) const { return blendColor_; } virtual QString blendColorName( bool translated ) const { return blendColorName( blendColor(), translated ); } virtual void setBlendColor( BlendColorType value ) { blendColor_ = value; } virtual void setBlendColor( QString value, bool translated ) { blendColor_ = blendColor( value, translated ); } //@} //!@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() == SizeGripWhenNeeded && frameBorder() == BorderNone ); } //@} //! separator virtual SeparatorMode separatorMode( void ) const { return separatorMode_; } //! separator virtual void setSeparatorMode( SeparatorMode value ) { separatorMode_ = value; } //! title outline virtual bool drawTitleOutline( void ) const { return drawTitleOutline_; } //! title outline virtual void setDrawTitleOutline( bool value ) { drawTitleOutline_ = value; } //! hide title bar virtual bool hideTitleBar( void ) const { return hideTitleBar_; } //! hide title bar virtual void setHideTitleBar( bool value ) { hideTitleBar_ = value; } //! drop shadows virtual bool useDropShadows( void ) const { return useDropShadows_; } //! drop shadows virtual void setUseDropShadows( bool value ) { useDropShadows_ = value; } //! oxygen shadows virtual bool useOxygenShadows( void ) const { return useOxygenShadows_; } //! oxygen shadows virtual void setUseOxygenShadows( bool value ) { useOxygenShadows_ = value; } //! animations virtual bool useAnimations( void ) const { return useAnimations_; } //! animations virtual void setUseAnimations( bool value ) { useAnimations_ = value; } //! animations virtual bool animateTitleChange( void ) const { return animateTitleChange_; } //! animations virtual void setAnimateTitleChange( bool value ) { animateTitleChange_ = value; } //! animations virtual int animationsDuration( void ) const { return animationsDuration_; } //! animations virtual void setAnimationsDuration( int value ) { animationsDuration_ = value; } //! tabbing virtual bool tabsEnabled( void ) const { return tabsEnabled_; } //! tabbing virtual void setTabsEnabled( bool value ) { tabsEnabled_ = value; } private: //! title alignment Qt::Alignment titleAlignment_; //! button size ButtonSize buttonSize_; //! blend color FrameBorder frameBorder_; //! frame border BlendColorType blendColor_; //! size grip mode SizeGripMode sizeGripMode_; //! separator SeparatorMode separatorMode_; //! active window title outline bool drawTitleOutline_; //! hide titlebar completely (but not window border) bool hideTitleBar_; //! drop shadows bool useDropShadows_; //! oxygen shadows bool useOxygenShadows_; //! animations bool useAnimations_; //! animations bool animateTitleChange_; //! animations int animationsDuration_; //! tabbing bool tabsEnabled_; //! narrow button spacing bool useNarrowButtonSpacing_; //! shadow mode ShadowMode shadowMode_; //! shadow cache mode ShadowCacheMode shadowCacheMode_; }; } #endif