diff options
Diffstat (limited to 'style/optionHandler.cpp')
-rw-r--r-- | style/optionHandler.cpp | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/style/optionHandler.cpp b/style/optionHandler.cpp new file mode 100644 index 0000000..d96b700 --- /dev/null +++ b/style/optionHandler.cpp @@ -0,0 +1,251 @@ +#include "baghira.h" +#include <qapplication.h> +#include <qbrush.h> +#include <qcolor.h> +#include <qevent.h> +#include <qimage.h> +#include <qobject.h> +#include <qpainter.h> +#include <qpalette.h> +#include <qpopupmenu.h> +#include <qrect.h> +#include <qsettings.h> +#include <qsize.h> +#include <qstring.h> +// #include <kconfig.h> +#include <kpixmapeffect.h> +#include <stdio.h> +#include <cmath> + +#define _SCALE_ 65536 +#define _NORMALIZE_ >>16 + +#define CLAMP(x,l,u) x < l ? l :\ +x > u ? u :\ +x + +OptionHandler::OptionHandler( QObject *parent ) : QObject( parent ) { + scrollerActive = false; + groupShadowButton = false; + reloadSettings(); + } + + +const QColor& OptionHandler::textColor() { + return ( useCustomMenuColor ? fgColor : qApp->palette().active().text() ); + } + +const QColor& OptionHandler::bgColor() { + return qApp->palette().active().background(); + } + +const QColor& OptionHandler::buttonColor() { + LiquidStyle * style = ( LiquidStyle* ) parent(); + /*if (style->isKicker) return style->origPanelBrush.color(); + else */if (style->isOOO) return CustomButtonColor(); + else return qApp->palette().active().button(); + } + +void OptionHandler::reloadSettings() { + // gather options... + QSettings config; + config.beginGroup("/baghira/Style"); + //we need that first to make sure we use some proper settings ;) + customButtonColor = QColor(config.readNumEntry("Design_ButtonColor",(int)qApp->palette().active().button().rgb())); + // design handling: + // first try file: + QString tmpString; + FILE *file = NULL; + wmDesign = 5; + for (int i = 0; i < 8; i++) + custCols[i] = -1; + if (qstrcmp( qApp->argv() [ 0 ], "ksplash" ) == 0) + { + style_ = Panther; + _toolbuttonStyle = Panther; + _buttonStyle = Panther; + tabStyle_ = Clever; + bgStipple = false; + inactiveButtonColor = Background; + } + else + { + // first try for a tmp file from bab starter + int tmpFile = 0; + tmpString = QDir::homeDirPath() + "/.baghira/.bab/" + qApp->argv() [ 0 ]; + file = fopen(tmpString.latin1(), "r"); + if( file == NULL ) + { + tmpFile = 1; + tmpString = QDir::homeDirPath() + "/.baghira/" + qApp->argv() [ 0 ]; + file = fopen(tmpString.latin1(), "r"); + if( file == NULL ) + { + tmpFile = 2; + tmpString = QDir::homeDirPath() + "/.baghira/.bab/.style"; + file = fopen(tmpString.latin1(), "r"); + } + } + if (file != NULL) + { + style_ = _buttonStyle = _toolbuttonStyle = Panther; int i3 = inactiveButtonColor = -1; tabStyle_ = (tabStyle)-1; + fscanf(file,"%u\n%u\n%u\n%u\n%u\n%u\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",&style_, &wmDesign, &_buttonStyle, &_toolbuttonStyle, &tabStyle_, &i3, &custCols[0], &custCols[1], &custCols[2], &custCols[3], &custCols[4], &custCols[5], &custCols[6], &custCols[7], &inactiveButtonColor); + fclose(file); + if (_toolbuttonStyle < 0 || _toolbuttonStyle >= NUMSTYLES) + _toolbuttonStyle = (Style)config.readNumEntry( "Special_ToolbuttonStyle", style_); + if (_buttonStyle < 0 || _buttonStyle >= NUMSTYLES) + _buttonStyle = (Style)config.readNumEntry( "Special_ButtonStyle", style_); + if (tabStyle_ < 0 || tabStyle_ > 2) + tabStyle_ = (tabStyle) config.readNumEntry( (style_ == Brushed)?"Design_TabStyleBrushed":"Design_TabStyleAqua", Clever); + if (inactiveButtonColor < 0 || inactiveButtonColor > 3) + inactiveButtonColor = config.readNumEntry( "Design_InactiveButtonStyle", Background); + if (style_ == Brushed) + bgStipple = TRUE; + else if (i3 == 0) + bgStipple = FALSE; + else + bgStipple = config.readBoolEntry( "Design_StippleBackground", true ); + // inactive Button + if (tmpFile == 0) + remove(tmpString.latin1()); // remove TEMPORARY file + else if (tmpFile == 2) + { + tmpString = QDir::homeDirPath() + "/.baghira/.bab/.deco"; + if ((file = fopen(tmpString.latin1(), "r")) != NULL) + { + fscanf(file,"%u\n%u\n",&i3, &wmDesign); + fclose(file); + } + } + } + else + { + style_ = (Style)config.readNumEntry( "Design_Default", Panther ); + _toolbuttonStyle = (Style)config.readNumEntry( "Special_ToolbuttonStyle", style_); + _buttonStyle = (Style)config.readNumEntry( "Special_ButtonStyle", style_); + tabStyle_ = (tabStyle) config.readNumEntry( (style_ == Brushed)?"Design_TabStyleBrushed":"Design_TabStyleAqua", Clever); + bgStipple = (style_ == Brushed) ? true : config.readBoolEntry( "Design_StippleBackground", true ); + inactiveButtonColor = config.readNumEntry( "Design_InactiveButtonStyle", Background); + } + } + contrast = 0; + if (wmDesign > 4) + wmDesign = style_; + if (style_ == Jaguar) + contrast = 4; + else if (style_ == Brushed) + { + tintBrush = config.readBoolEntry( "Colors_TintBrushedMetal", false ); + if (tintBrush) + brushTint.setRgb( config.readNumEntry( "Colors_BrushTint", ( int ) bgColor().rgb())); + } + // menu stuff + glossyMenus_ = config.readBoolEntry( "Menu_Glossy", true ); + menuBackground = config.readNumEntry( "Menu_Background", Standard); + menuOpacity = config.readNumEntry( "Menu_Opacity", 70); + int menuColorStyle = config.readNumEntry( "Menu_ColorStyle", 0); + menuColorButton = (menuColorStyle == 1); + useCustomMenuColor = (menuColorStyle == 2); + shadowText = config.readBoolEntry( "Menu_ShadowText", false); + if (useCustomMenuColor){ + color = QColor( config.readNumEntry( "Menu_Color1", 0 ) ); + color2 = QColor( config.readNumEntry( "Menu_Color2", 0 ) ); + colorHigh = QColor( config.readNumEntry( "Menu_ColorHighlight", 0 ) ); + fgColor = QColor( config.readNumEntry( "Menu_TextColor", 0 ) ); + fgColorHigh = QColor( config.readNumEntry( "Menu_TextColorHighlight", 0 ) ); + } + else if (menuColorButton){ + color = customButtonColor; + color2 = customButtonColor.dark(130); + } + else { + color = qApp->palette().active().background(); + color2 = qApp->palette().active().background().dark(130); + } + drawMenuStripe_ = config.readBoolEntry("Menu_DrawMenuStripe", false); + if (drawMenuStripe_) + menuStripeColor_ = QColor(config.readNumEntry("Menu_StripeColor"),(int)Qt::white.rgb()); + // color stuff + // widgets + customWidgetColor = config.readBoolEntry( "Colors_UseCustomColors", false); + if ( customWidgetColor ) { + customColors[ CustomRadioOn ].setRgb( config.readNumEntry( "Colors_RadioOn", ( int ) buttonColor().rgb() ) ); + customColors[ CustomRadioOff ].setRgb( config.readNumEntry( "Colors_RadioOff", ( int ) bgColor().rgb() ) ); + customColors[ CustomCBOn ].setRgb( config.readNumEntry( "Colors_CheckOn", ( int ) buttonColor().rgb() ) ); + customColors[ CustomCBOff ].setRgb( config.readNumEntry( "Colors_CheckOff", ( int ) bgColor().rgb() ) ); + customColors[ CustomTabOn ].setRgb( config.readNumEntry( "Colors_TabActive", ( int ) buttonColor().rgb() ) ); + customColors[ CustomTabOff ].setRgb( config.readNumEntry( "Colors_TabInactive", ( int ) bgColor().rgb() ) ); + customColors[ CustomSBSlider ].setRgb( config.readNumEntry( "Colors_Slider", ( int ) bgColor().rgb() ) ); + customColors[ CustomSBSliderHover ].setRgb( config.readNumEntry( "Colors_SliderHovered", ( int ) buttonColor().rgb() ) ); + customColors[ CustomSBSliderPressed ].setRgb( config.readNumEntry( "Colors_SliderPressed", ( int ) buttonColor().dark(110).rgb() ) ); + customColors[ CustomSBGroove ].setRgb( config.readNumEntry( "Colors_SliderGroove", ( int ) bgColor().rgb() ) ); + } + if (inactiveButtonColor == Custom) + customInactiveButtonColor = QColor( config.readNumEntry( "Design_InactiveButtonColor", (int) bgColor().rgb())); + contrast += config.readNumEntry( "Design_StippleContrast", 3); + bevelHighlights_ = config.readBoolEntry( "Design_BevelAsHighlight", true); + //shadows +groupboxshadow = (style_ == Brushed) ? false : config.readBoolEntry( "Design_ShadowGroupBoxes", true ); + shadowDarkness = config.readNumEntry( "Design_GroupBoxeShadowDarkness", 6); + //ListViews + expanderStyle = config.readNumEntry( "Special_ExpanderStyle", Apple); + useCustomExpanderColor = config.readBoolEntry( "Special_CustomExpanderColor", false); + if (useCustomExpanderColor) + expanderColor = QColor( config.readNumEntry( "Special_ExpanderColor", (int) qApp->palette().active().text().rgb())); + drawDotlines = config.readBoolEntry( "Special_DrawTreeLines", true); + if (drawDotlines){ + dotlineStyle = config.readNumEntry( "Special_TreelineStyle", Line); + dotlineColor = QColor( config.readNumEntry( "Special_TreelineColor", (int) qApp->palette().active().mid().rgb())); + } + //slider + squeezesbslider = config.readBoolEntry( "Special_SqueezeSlider", false ); + shadowsbslider = config.readBoolEntry( "Special_ShadowSlider", false ); + animateSlider = config.readBoolEntry( "Special_AnimateSlider", true ); + // toolbar + int utb = config.readNumEntry( "Special_UnhoveredToolButtons", 2 ); + tbFrame = (utb == 2) || ((style_ == Brushed) && (utb == 1)) || ((style_ != Brushed) && (utb == 0)); + + // tweaks + centerTabs = config.readBoolEntry( "Design_CenterTabs", true); + smoothListViewHeaders = (style_ == Milk) ? true : !config.readBoolEntry( "Special_UseFlatLVH", false); + smootherLVH = config.readBoolEntry( "Special_RoundTaskbuttons", false); + icyButtons = config.readNumEntry( "Design_ButtonStyle", 0) == 0; + progressBar = config.readNumEntry( "Special_ProgressStyle", baghira); + removeKickerBevel = config.readBoolEntry( "Special_RemoveKickerBevel", false); + animateButton = config.readBoolEntry( "Design_AnimateButtons", true); + animateProgress = config.readBoolEntry( "Design_AnimateProgress", true); + drawProgressLabel = config.readBoolEntry( "Special_ShowProgressValue", false); + config.endGroup(); + + config.beginGroup("/baghira/Deco"); + titleButtonColor_[0] = QColor((unsigned int)config.readNumEntry( "CloseButtonColor", QColor(200,85,70).rgb())); + titleButtonColor_[1] = QColor((unsigned int)config.readNumEntry( "MinButtonColor", QColor(230,155,40).rgb())); + titleButtonColor_[2] = QColor((unsigned int)config.readNumEntry( "MaxButtonColor", QColor(121,180,54).rgb())); + if (style_ == Jaguar) + { + titleColor_[0] = QColor((unsigned int)config.readNumEntry( "inactiveColor1_1", QColor(204,214,230).rgb())); + titleColor_[1] = QColor((unsigned int)config.readNumEntry( "inactiveColor2_1", QColor(194,196,211).rgb())); + } + else if (style_ != Brushed) + { + titleColor_[0] = QColor((unsigned int)config.readNumEntry( "activeColor1_2", QColor(238,238,238).rgb())); + titleColor_[1] = QColor((unsigned int)config.readNumEntry( "activeColor2_2", QColor(205,202,205).rgb())); + } + if (style_ == Tiger) + { + int r,g,b; + aDecoColor1_ = QColor((unsigned int)config.readNumEntry( "activeColor2_4", (unsigned int) QColor(205,202,205).rgb())); + aDecoColor2_ = QColor((unsigned int)config.readNumEntry( "activeColor1_4", (unsigned int) QColor(238,238,238).rgb())); + r = (int)CLAMP(aDecoColor1_.red() * pow((double)aDecoColor1_.red() / (double)aDecoColor2_.red(),2.0),0,255); + g = (int)CLAMP(aDecoColor1_.green() * pow((double)aDecoColor1_.green() / (double)aDecoColor2_.green(),2.0),0,255); + b = (int)CLAMP(aDecoColor1_.blue() * pow((double)aDecoColor1_.blue() / (double)aDecoColor2_.blue(),2.0),0,255); + aDecoColor2_.setRgb(r,g,b); + } + else + { + aDecoColor1_ = Qt::black; + aDecoColor2_ = Qt::black; + } + config.endGroup(); + // Option gathered + } |