summaryrefslogtreecommitdiffstats
path: root/config/kstyle_baghira_config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'config/kstyle_baghira_config.cpp')
-rw-r--r--config/kstyle_baghira_config.cpp1243
1 files changed, 1243 insertions, 0 deletions
diff --git a/config/kstyle_baghira_config.cpp b/config/kstyle_baghira_config.cpp
new file mode 100644
index 0000000..1e838e8
--- /dev/null
+++ b/config/kstyle_baghira_config.cpp
@@ -0,0 +1,1243 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Thomas Lübking *
+ * thomas@home *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <qdesktopwidget.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qcheckbox.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qgroupbox.h>
+#include <kfiledialog.h>
+#include <qpainter.h>
+//#include <qpalette.h>
+// #include <qsettings.h>
+#include <qslider.h>
+#include <qspinbox.h>
+#include <qstringlist.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qpixmap.h>
+#include <klistview.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <dcopclient.h>
+#include <kapplication.h>
+#include <kcolorbutton.h>
+#include <kconfig.h>
+#include <kimageeffect.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <kprocess.h>
+#include <kparts/genericfactory.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <fixx11h.h>
+
+#include "kstyle_baghira_config.h"
+#include "pixmaps.h"
+#include "colordialog.h"
+#include "colorpicker.h"
+
+#include "config.h"
+
+//#define VERSION "0.7"
+
+#ifndef KDE_VERSION_STRING
+#define KDE_VERSION_STRING "error"
+#endif
+#ifndef QT_BUILD_KEY
+#define QT_BUILD_KEY "error error error error"
+#endif
+
+#define CLAMP(x,l,u) x < l ? l :\
+ x > u ? u :\
+ x
+
+#define SATURATION_COLOR(R,G,B) \
+ grey = (299 * R + 587 * G + 114 * B) / 1000; \
+ delta = 255 - grey; \
+ grey = (grey *(10 - 5)) / 10; \
+ iGrey = 255 - grey;\
+ destR = (iGrey * (srcR - delta) + grey * R) / 255; \
+ destG = (iGrey * (srcG - delta) + grey * G) / 255; \
+ destB = (iGrey * (srcB - delta) + grey * B) / 255;
+
+#define SATURATION_COLOR2(S,R,G,B) \
+ int max = (int)(255+0.65*(100-S)); \
+ destR = CLAMP((srcR + R - 128), 0, max); \
+ destG = CLAMP((srcG + G - 128), 0, max); \
+ destB = CLAMP((srcB + B - 128), 0, max); \
+ destR = (S*destR + (100-S)*R)/100; \
+ destG = (S*destG + (100-S)*G)/100; \
+ destB = (S*destB + (100-S)*B)/100;
+
+#define COLOR_SPACE(R,G,B) \
+ if ( R < 0 ) R = 0; else if ( R > 255 ) R = 255; \
+ if ( G < 0 ) G = 0; else if ( G > 255 ) G = 255; \
+ if ( B < 0 ) B = 0; else if ( B > 255 ) B = 255;
+
+
+void kstyle_baghira_config::openHtml1()
+{
+ QStringList args;
+ args << "exec" << "http://baghira.sf.net/";
+ kapp->kdeinitExec("kfmclient", args);
+}
+
+void kstyle_baghira_config::openHtml2()
+{
+ QStringList args;
+ args << "exec" << "http://www.sf.net/projects/baghira/files/";
+ kapp->kdeinitExec("kfmclient", args);
+}
+
+void kstyle_baghira_config::startBab()
+{
+ kapp->kdeinitExec("bab");
+}
+
+void kstyle_baghira_config::startKRuler()
+{
+ kapp->kdeinitExec("kruler");
+}
+
+QImage* kstyle_baghira_config::tintButton(QImage &src, QColor c)
+{
+ QImage *dest = new QImage( src.width(), src.height(), 32, 0 );
+ dest->setAlphaBuffer( true );
+ unsigned int *data = ( unsigned int * ) src.bits();
+ unsigned int *destData = ( unsigned int* ) dest->bits();
+ int total = src.width() * src.height();
+ int red, green, blue;
+ int destR, destG, destB, alpha;
+ int srcR = c.red();
+ int srcG = c.green();
+ int srcB = c.blue();
+ int hue, s, v;
+ c.getHsv( &hue, &s, &v );
+ int sq = CLAMP((int)((45.0/128.0)*s+55),0,100);
+ // float srcPercent, destPercent;
+ for ( int current = 0 ; current < total ; ++current ) {
+ alpha = qAlpha( data[ current ] );
+ blue = qBlue( data[ current ] );
+ red = qRed( data[ current ] );
+ green = qGreen( data[ current ] );
+ SATURATION_COLOR2(sq, red, green, blue);
+ // force back to valid colorspace !
+ COLOR_SPACE(destR, destG, destB);
+ destData[ current ] = qRgba( destR, destG, destB, alpha );
+ }
+ return ( dest );
+}
+
+QImage* kstyle_baghira_config::tintBrush( QImage &img, QColor c)
+{
+ QImage *dest = new QImage( img.width(), img.height(), 32, 0 );
+ unsigned int *data = ( unsigned int * ) img.bits();
+ unsigned int *destData = ( unsigned int* ) dest->bits();
+ int total = img.width() * img.height();
+ int current;
+ int delta;
+ int red, green, blue, grey, iGrey;
+ int destR, destG, destB, alpha;
+
+ int srcR = c.red();
+ int srcG = c.green();
+ int srcB = c.blue();
+
+
+ // float srcPercent, destPercent;
+ for ( current = 0 ; current < total ; ++current ) {
+ alpha = qAlpha( data[ current ] );
+ blue = qBlue( data[ current ] );
+ red = qRed( data[ current ] );
+ green = qGreen( data[ current ] );
+ SATURATION_COLOR(red, green, blue);
+ // force back to valid colorspace !
+ COLOR_SPACE(destR, destG, destB);
+ destData[ current ] = qRgba( destR, destG, destB, alpha );
+ }
+ return ( dest );
+}
+
+void kstyle_baghira_config::sliderButtonRedChanged(int value)
+{
+ sliderButtonRedValue = value;
+ dialog_->valueButtonRed->setNum(value);
+ dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, QColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue)));
+ dialog_->pixmapButtonPreview->repaint(false);
+ configChanged();
+}
+
+void kstyle_baghira_config::sliderButtonGreenChanged(int value)
+{
+ sliderButtonGreenValue = value;
+ dialog_->valueButtonGreen->setNum(value);
+ dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, QColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue)));
+ dialog_->pixmapButtonPreview->repaint(false);
+ configChanged();
+}
+
+void kstyle_baghira_config::sliderButtonBlueChanged(int value)
+{
+ sliderButtonBlueValue = value;
+ dialog_->valueButtonBlue->setNum(value);
+ dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, QColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue)));
+ dialog_->pixmapButtonPreview->repaint(false);
+ configChanged();
+}
+
+void kstyle_baghira_config::sliderBrushRedChanged(int value)
+{
+ sliderBrushRedValue = value;
+ dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, QColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue)));
+ dialog_->pixmapBrushPreview->repaint(false);
+ configChanged();
+}
+
+void kstyle_baghira_config::sliderBrushGreenChanged(int value)
+{
+ sliderBrushGreenValue = value;
+ dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, QColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue)));
+ dialog_->pixmapBrushPreview->repaint(false);
+ configChanged();
+}
+
+void kstyle_baghira_config::sliderBrushBlueChanged(int value)
+{
+ sliderBrushBlueValue = value;
+ dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, QColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue)));
+ dialog_->pixmapBrushPreview->repaint(false);
+ configChanged();
+}
+
+// void kstyle_baghira_config::sliderBrushSaturationChanged(int value)
+// {
+// sliderBrushSaturationValue = value;
+// dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, QColor(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue), sliderBrushSaturationValue));
+// dialog_->pixmapBrushPreview->repaint(false);
+// emit changed(true);
+// }
+
+// button color preset table - internal only, AND DON'T CHANGE ONLY ONE!
+
+enum ColorPreset {Aqua = 0, Graphite, GraphiteDark, Orange, Lime, Black, Smoke, Girlie, Smaragd, Emerald, Yellow, DeepBlueSea, Blood, Turquoise, Lilac, NUMBEROFCOLORS};
+
+const char * presetColorName[NUMBEROFCOLORS] = {
+ "Aqua", "Graphite", "Graphite (Dark)", "Orange", "Lime", "Black", "Smoke", "Girlie", "Smaragd", "Emerald", "Yellow", "Deep Blue Sea", "Blood", "Turquoise", "Lilac"
+};
+
+int presetColor[NUMBEROFCOLORS][3] = {{84,144,218},{130,170,190},{103,118,134},{200,130,30},{130,180,80},{0,0,0},{106,110,120},{255,130,200},{100,160,75},{255,100,90},{160,160,70},{50,100,200},{150,25,25},{60,170,190},{150,130,220}};
+
+// --------------------------------
+
+typedef KGenericFactory<kstyle_baghira_config, QWidget> kstyle_baghira_configFactory;
+K_EXPORT_COMPONENT_FACTORY( kcm_kstyle_baghira_config, kstyle_baghira_configFactory("kcmkstyle_baghira_config"))
+
+//extern QImage uic_findImage(const QString& name);
+//extern void qInitImages_baghira();
+//extern void qCleanupImages_baghira();
+
+void kstyle_baghira_config::updateCR()
+{
+ if (!about_->isShown())
+ {
+ timer->stop();
+ return;
+ }
+ if (crCurrent < 2)
+ crCurrent++;
+ else
+ crCurrent = 0;
+ about_->crLabel->setText(crNotes[crCurrent]);
+}
+
+void kstyle_baghira_config::showAbout()
+{
+ crCurrent = 0;
+ about_->crLabel->setText(crNotes[0]);
+ timer->start( 4000 );
+ about_->exec();
+}
+
+kstyle_baghira_config::kstyle_baghira_config(QWidget *parent, const char *name, const QStringList&) : QWidget(parent, name )//, myAboutData(0)
+{
+ loadDone = false;
+ if (parent) parent->setCaption("Configure Your Cat");
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ dialog_ = new Config(this);
+
+ for (int i = 0; i < NUMBEROFCOLORS; i++)
+ dialog_->colorPresets->insertItem ( presetColorName[i], i );
+
+ QWidget *rulesWidget = new QWidget(dialog_->tabWidget);
+ QHBoxLayout *rwlh = new QHBoxLayout(rulesWidget);
+ applist = new KListView(rulesWidget);
+ applist->setFullWidth(true);
+#if KDE_IS_VERSION(3,3,91)
+ applist->setShadeSortColumn(false);
+#endif
+ applist->setAllColumnsShowFocus( true );
+ applist->setSelectionMode(QListView::Single);
+ applist->addColumn ( i18n("Name") );
+ applist->addColumn ( i18n("Links to") );
+ QDir d( QDir::homeDirPath() + "/.baghira", 0L, QDir::Name | QDir::IgnoreCase, QDir::Files | QDir::Readable | QDir::Writable );
+ if (!d.exists())
+ d.mkdir(QDir::homeDirPath() + "/.baghira");
+ else
+ {
+ for ( uint i = 0; i < d.count(); i++ )
+ {
+ QFileInfo FI = QFileInfo(d, d[i]);
+ if (FI.isSymLink())
+ applist->insertItem(new KListViewItem(applist, d[i], FI.readLink().section('/',-1,-1)));
+ else
+ applist->insertItem(new KListViewItem(applist, d[i]));
+ }
+ }
+ rwlh->addWidget(applist);
+// rwlh->addLayout(rwlv);
+ QVBoxLayout *rwlv = new QVBoxLayout(rwlh);
+ rwlv->addStretch();
+ QPushButton *btnNew = new QPushButton("New...", rulesWidget);
+ QPushButton *btnEdit = new QPushButton("Edit...", rulesWidget);
+ QPushButton *btnDel = new QPushButton("Remove", rulesWidget);
+ QPushButton *btnDet = new QPushButton("Detect", rulesWidget);
+ rwlv->addWidget(btnNew);
+ rwlv->addWidget(btnEdit);
+ rwlv->addWidget(btnDel);
+ rwlv->addSpacing( 5 );
+ rwlv->addWidget(btnDet);
+ rwlv->addStretch();
+ dialog_->tabWidget->addTab( rulesWidget, QString("Rules") );
+ appsetter = new AppSetter(this);
+ connect(btnNew, SIGNAL(clicked()), appsetter, SLOT(show()));
+ connect(btnEdit, SIGNAL(clicked()), this, SLOT(editApp()));
+ connect(this, SIGNAL(editApp(QString, QString)), appsetter, SLOT(show(QString, QString)));
+ connect(btnDel, SIGNAL(clicked()), this, SLOT(removeApp()));
+ connect(btnDet, SIGNAL(clicked()), this, SLOT(selectWindow()));
+ connect(appsetter, SIGNAL(addApp(QString, QString)), this, SLOT(addApp(QString, QString)));
+ connect(appsetter, SIGNAL(removeApp(QString)), this, SLOT(removeApp(QString)));
+ // preview stuff
+ baseImage = uic_findImage("button-base");
+
+ layout->addWidget(dialog_);
+
+ dialog_->show();
+ help_ = new Help(dialog_);
+ about_ = new About(dialog_);
+ about_->versionLabel->setText(VERSION);
+ about_->kdeLabel->setText(KDE_VERSION_STRING);
+ crCurrent = 0;
+ crNotes[0] = "<qt>© 2003-2005 by Thomas Lübking<br>http://baghira.SourceForge.net</qt>";
+ crNotes[1] = "<qt>© \"Design\" 2001-2005 by Apple inc.<br>http://www.apple.com";
+ crNotes[2] = "<qt>© \"Milk\" 2002-2005 by Max Rudberg<br>http://www.maxthemes.com</qt>";
+ timer = new QTimer();
+ connect( timer, SIGNAL(timeout()), this, SLOT(updateCR()) );
+ QString tmpString(QT_BUILD_KEY);
+ about_->systemLabel->setText(tmpString.section(' ',1,1));
+ about_->cpuLabel->setText(tmpString.section(' ',0,0));
+ about_->setFixedSize (380, 430);
+
+ // connections
+ // buttons
+ connect(dialog_->buttonHelp, SIGNAL(clicked()), help_, SLOT(exec()));
+ connect(dialog_->buttonAbout, SIGNAL(clicked()), this, SLOT(showAbout()));
+ connect(about_->buttonInfo, SIGNAL(clicked()), this, SLOT(openHtml1()));
+ connect(about_->buttonDownload, SIGNAL(clicked()), this, SLOT(openHtml2()));
+ connect(help_->startBAB, SIGNAL(clicked()), this, SLOT(startBab()));
+ connect(dialog_->startKRuler, SIGNAL(clicked()), this, SLOT(startKRuler()));
+ connect(dialog_->buttonLoad, SIGNAL(clicked()), this, SLOT(buttonLoadAction()));
+ connect(dialog_->buttonSaveAs, SIGNAL(clicked()), this, SLOT(buttonSaveAsAction()));
+ connect(dialog_->colorPresets, SIGNAL(activated(int)), this, SLOT(setPresetColor(int)));
+
+ // changes
+ connect(dialog_->defaultStyle, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->buttonStyle, SIGNAL(activated(int)), this, SLOT(handleButtonStyles(int)));
+ connect(dialog_->toolbuttonStyle, SIGNAL(activated(int)), this, SLOT(handleButtonStyles(int)));
+ connect(dialog_->animateButtons, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->stippleBackground, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->bevelHighlights, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->stippleContrast, SIGNAL(valueChanged (int)), this, SLOT(configChanged()));
+ connect(dialog_->shadowGroups, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->shadowIntensity, SIGNAL(valueChanged (int)), this, SLOT(configChanged()));
+ connect(dialog_->centerTabs, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->colorMode, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->inactiveColorType, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->animateSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->shadowSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->squeezeSlider, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->unhoveredToolButtons, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->aquaTabs, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->brushedTabs, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->drawTreeLines, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->useCustomExpanderColor, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->treeLineMode, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->expanderMode, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->useCustomExpanderColor, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->useRectLVH, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->removeKickerBevel, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->replaceMenubar, SIGNAL(toggled(bool)), this, SLOT(menuToggled(bool)));
+ connect(dialog_->roundTasks, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->showProgressValue, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->progressType, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->menuBackground, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->menuOpacity, SIGNAL(valueChanged (int)), this, SLOT(configChanged()));
+ connect(dialog_->shadowMenuText, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->menuColorMode, SIGNAL(activated(int)), this, SLOT(configChanged()));
+ connect(dialog_->useCustomColors, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->drawMenuStripe, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+ connect(dialog_->glossyMenus, SIGNAL(stateChanged(int)), this, SLOT(configChanged()));
+
+ connect(dialog_->customInactiveColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+connect(dialog_->toolbuttonHighColor, SIGNAL(changed(const QColor &)), this, SLOT(changeTooluttonHighlightColor(const QColor &)));
+ connect(dialog_->treeLineColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->customExpanderColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuTextColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuTextColorHigh, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuColorHigh, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuColor2, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->radioOffColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->radioOnColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->checkOffColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->checkOnColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->sliderColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->hoverSliderColorColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->pressedSliderColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->inactiveTabColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->activeTabColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+ connect(dialog_->menuStripeColor, SIGNAL(changed(const QColor &)), this, SLOT(configChanged()));
+
+ connect(dialog_->sliderButtonRed, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonRedChanged(int)));
+ connect(dialog_->sliderButtonGreen, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonGreenChanged(int)));
+ connect(dialog_->sliderButtonBlue, SIGNAL(valueChanged (int)), this, SLOT(sliderButtonBlueChanged(int)));
+
+ connect(dialog_->sliderBrushRed, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushRedChanged(int)));
+ connect(dialog_->sliderBrushGreen, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushGreenChanged(int)));
+ connect(dialog_->sliderBrushBlue, SIGNAL(valueChanged (int)), this, SLOT(sliderBrushBlueChanged(int)));
+
+ // GUI
+ connect (dialog_->defaultStyle, SIGNAL(activated(int)), this, SLOT(setDesign(int)));
+ connect (dialog_->inactiveColorType, SIGNAL(activated(int)), this, SLOT(enableInButtonColor(int)));
+ connect (dialog_->drawTreeLines, SIGNAL(toggled(bool)), dialog_->treeLineMode, SLOT(setEnabled(bool)));
+ connect (dialog_->drawTreeLines, SIGNAL(toggled(bool)), dialog_->treeLineColor, SLOT(setEnabled(bool)));
+ connect (dialog_->useCustomExpanderColor, SIGNAL(toggled(bool)), dialog_->customExpanderColor, SLOT(setEnabled(bool)));
+ connect (dialog_->menuColorMode, SIGNAL(activated(int)), this, SLOT(enableMenuColorStuff(int)));
+ connect (dialog_->menuBackground, SIGNAL(activated(int)), this, SLOT(enableMenuColorStuff(int)));
+ connect (dialog_->drawMenuStripe, SIGNAL(toggled(bool)), dialog_->menuStripeColor, SLOT(setEnabled(bool)));
+// connect (dialog_->tintBrush, SIGNAL(toggled(bool)), dialog_->brushBox, SLOT(setEnabled(bool)));
+ connect (dialog_->useCustomColors, SIGNAL(toggled(bool)), dialog_->colorFrame, SLOT(setEnabled(bool)));
+
+ // load settings
+ load();
+ loadDone = true;
+
+ dialog_->pixmapButtonPreview->setPixmap(*tintButton(baseImage, QColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue)));
+
+};
+
+kstyle_baghira_config::~kstyle_baghira_config()
+{
+ if (timer) delete timer;
+}
+
+void kstyle_baghira_config::setPresetColor(int i)
+{
+ dialog_->sliderButtonRed->setValue(presetColor[i][0]);
+ dialog_->sliderButtonGreen->setValue(presetColor[i][1]);
+ dialog_->sliderButtonBlue->setValue(presetColor[i][2]);
+}
+
+void kstyle_baghira_config::load()
+{
+ QString tmpString = QDir::homeDirPath() + "/.qt/baghirarc";
+ load (tmpString);
+}
+
+void kstyle_baghira_config::load(QString &fileName)
+{
+ KConfig *config = new KConfig(fileName);
+// QSettings config;
+ config->setGroup("BAB");
+ // general Design
+ dialog_->defaultStyle->setCurrentItem(config->readNumEntry("defaultState", 0 ));
+// config->endGroup();
+ config->setGroup("Style");
+ dialog_->buttonStyle->setCurrentItem(config->readNumEntry("Special_ButtonStyle", 1 ));
+ dialog_->toolbuttonStyle->setCurrentItem(config->readNumEntry("Special_ToolbuttonStyle", 1 ));
+ dialog_->stippleBackground->setChecked( config->readBoolEntry( "Design_StippleBackground", true));
+ dialog_->animateButtons->setChecked( config->readBoolEntry( "Design_AnimateButtons", true));
+ dialog_->stippleContrast->setValue( config->readNumEntry( "Design_StippleContrast", 3));
+ dialog_->shadowGroups->setChecked( config->readBoolEntry( "Design_ShadowGroupBoxes", true));
+ dialog_->shadowIntensity->setValue( config->readNumEntry( "Design_GroupBoxeShadowDarkness", 6));
+ dialog_->bevelHighlights->setChecked( config->readBoolEntry( "Design_BevelAsHighlight", true));
+ dialog_->colorMode->setCurrentItem(config->readNumEntry("Design_ButtonStyle", 0));
+ dialog_->inactiveColorType->setCurrentItem(config->readNumEntry( "Design_InactiveButtonStyle", 1));
+ dialog_->customInactiveColor->setColor(QColor(config->readNumEntry("Design_InactiveButtonColor",(int)colorGroup().background().rgb())));
+ dialog_->centerTabs->setChecked( config->readBoolEntry( "Design_CenterTabs", true));
+ // button color stuff
+ QColor tmpColor = QColor(config->readNumEntry("Design_ButtonColor",(int)colorGroup().button().rgb()));
+ dialog_->sliderButtonRed->setValue(sliderButtonRedValue = tmpColor.red());
+ dialog_->sliderButtonGreen->setValue(sliderButtonGreenValue = tmpColor.green());
+ dialog_->sliderButtonBlue->setValue(sliderButtonBlueValue = tmpColor.blue());
+ dialog_->valueButtonRed->setNum(sliderButtonRedValue);
+ dialog_->valueButtonGreen->setNum(sliderButtonGreenValue);
+ dialog_->valueButtonBlue->setNum(sliderButtonBlueValue);
+
+ // special Widgets
+ //ListViews
+ dialog_->useRectLVH->setChecked( config->readBoolEntry( "Special_UseFlatLVH", false));
+ dialog_->drawTreeLines->setChecked( config->readBoolEntry( "Special_DrawTreeLines", false));
+ dialog_->treeLineMode->setCurrentItem(config->readNumEntry( "Special_TreelineStyle", 0));
+ dialog_->treeLineColor->setColor( QColor( config->readNumEntry( "Special_TreelineColor", (int) colorGroup().mid().rgb())));
+ dialog_->expanderMode->setCurrentItem(config->readNumEntry( "Special_ExpanderStyle", 0));
+ dialog_->useCustomExpanderColor->setChecked( config->readBoolEntry( "Special_CustomExpanderColor", false));
+ dialog_->customExpanderColor->setColor( QColor( config->readNumEntry( "Special_ExpanderColor", (int) colorGroup().text().rgb())));
+ //Kicker
+ dialog_->removeKickerBevel->setChecked( config->readBoolEntry( "Special_RemoveKickerBevel", true));
+ dialog_->roundTasks->setChecked( config->readBoolEntry( "Special_RoundTaskbuttons", false));
+ QFile file(QDir::homeDirPath() + "/.kde/share/apps/kicker/applets/menuapplet.desktop");
+ dialog_->replaceMenubar->setChecked( menuReplaced = file.exists() );
+ //Scrollbars
+ dialog_->animateSlider->setChecked( config->readBoolEntry( "Special_AnimateSlider", true));
+ dialog_->shadowSlider->setChecked( config->readBoolEntry( "Special_ShadowSlider", false));
+ dialog_->squeezeSlider->setChecked( config->readBoolEntry( "Special_SqueezeSlider", false));
+ //Progress
+ dialog_->progressType->setCurrentItem( config->readNumEntry( "Special_ProgressStyle", 0));
+ dialog_->showProgressValue->setChecked( config->readBoolEntry( "Special_ShowProgressValue", false));
+ //Toolbars
+ dialog_->unhoveredToolButtons->setCurrentItem(config->readNumEntry( "Special_UnhoveredToolButtons", 2));
+ //Tabs
+ dialog_->aquaTabs->setCurrentItem(config->readNumEntry("Design_TabStyleAqua", 0 ));
+ dialog_->brushedTabs->setCurrentItem(config->readNumEntry("Design_TabStyleBrushed", 1 ));
+
+ // menus
+ dialog_->menuBackground->setCurrentItem( config->readNumEntry( "Menu_Background", 0));
+ dialog_->menuOpacity->setValue( config->readNumEntry( "Menu_Opacity", 70));
+ //Look
+ dialog_->shadowMenuText->setChecked( config->readBoolEntry( "Menu_ShadowText", true));
+ dialog_->menuColorMode->setCurrentItem(config->readNumEntry("Menu_ColorStyle"));
+ dialog_->menuTextColor->setColor( QColor( config->readNumEntry( "Menu_TextColor", (int) colorGroup().text().rgb())));
+ dialog_->menuTextColorHigh->setColor( QColor( config->readNumEntry( "Menu_TextColorHighlight", (int) colorGroup().highlightedText().rgb())));
+ dialog_->menuColor->setColor( QColor( config->readNumEntry( "Menu_Color1", (int) colorGroup().background().rgb())));
+ dialog_->menuColor2->setColor( QColor( config->readNumEntry( "Menu_Color2", (int) colorGroup().background().dark(130).rgb())));
+ dialog_->menuColorHigh->setColor( QColor( config->readNumEntry( "Menu_ColorHighlight", (int) colorGroup().highlight().rgb())));
+ dialog_->drawMenuStripe->setChecked(config->readBoolEntry( "Menu_DrawMenuStripe", false));
+ dialog_->glossyMenus->setChecked(config->readBoolEntry( "Menu_Glossy", true));
+ dialog_->menuStripeColor->setColor( QColor( config->readNumEntry( "Menu_StripeColor", (int) Qt::white.rgb())));
+
+ // custom colors
+ dialog_->useCustomColors->setChecked( config->readBoolEntry( "Colors_UseCustomColors", false));
+ dialog_->radioOffColor->setColor( QColor( config->readNumEntry( "Colors_RadioOff", ( int ) colorGroup().background().rgb())));
+ dialog_->radioOnColor->setColor( QColor( config->readNumEntry( "Colors_RadioOn", ( int ) colorGroup().button().rgb())));
+ dialog_->checkOffColor->setColor( QColor( config->readNumEntry( "Colors_CheckOff", ( int ) colorGroup().background().rgb())));
+ dialog_->checkOnColor->setColor( QColor( config->readNumEntry( "Colors_CheckOn", ( int ) colorGroup().button().rgb())));
+ dialog_->sliderColor->setColor( QColor( config->readNumEntry( "Colors_Slider", ( int ) colorGroup().button().rgb())));
+ dialog_->hoverSliderColorColor->setColor(QColor(config->readNumEntry("Colors_SliderHovered",(int)colorGroup().button().rgb())));
+ dialog_->pressedSliderColor->setColor(QColor(config->readNumEntry("Colors_SliderPressed",(int) colorGroup().button().dark(110).rgb())));
+ dialog_->sliderGrooveColor->setColor(QColor(config->readNumEntry("Colors_SliderGroove",(int)colorGroup().background().rgb())));
+ dialog_->inactiveTabColor->setColor(QColor(config->readNumEntry("Colors_TabInactive",(int) colorGroup().background().rgb())));
+ dialog_->activeTabColor->setColor(QColor(config->readNumEntry("Colors_TabActive",(int)colorGroup().button().rgb())));
+ dialog_->tintBrush->setChecked( config->readBoolEntry( "Colors_TintBrushedMetal", false));
+ brushTint = QColor(config->readNumEntry("Colors_BrushTint",(int)colorGroup().background().rgb()));
+// dialog_->brushTintSaturaion->setValue(settings.readNumEntry( "/qt/Baghira/brushTintSaturation", 3));
+ baseImage2 = uic_findImage("brush-me");
+ dialog_->pixmapBrushPreview->setPixmap(*tintBrush(baseImage2, brushTint));
+ dialog_->sliderBrushRed->setValue(sliderBrushRedValue = brushTint.red());
+ dialog_->sliderBrushGreen->setValue(sliderBrushGreenValue = brushTint.green());
+ dialog_->sliderBrushBlue->setValue(sliderBrushBlueValue = brushTint.blue());
+ config->setGroup("Menubar");
+ dialog_->menuMaxWidth->setValue(config->readNumEntry("Width", QDesktopWidget().availableGeometry().width()));
+ config->setGroup("Sidebar");
+ delete config;
+
+ config = new KConfig("kdeglobals");
+ config->setGroup( "Toolbar style" );
+ dialog_->toolbuttonHighColor->setColor(config->readColorEntry("HighlightColor", new QColor(103,141,178)) );
+ delete config;
+}
+
+
+void kstyle_baghira_config::defaults()
+{
+ dialog_->defaultStyle->setCurrentItem(0);
+ dialog_->buttonStyle->setCurrentItem(1);
+ dialog_->toolbuttonStyle->setCurrentItem(1);
+ dialog_->animateButtons->setChecked( true);
+ dialog_->stippleBackground->setChecked( true);
+ dialog_->stippleContrast->setValue( 30);
+ dialog_->shadowGroups->setChecked( true);
+ dialog_->shadowIntensity->setValue( 50);
+ dialog_->bevelHighlights->setChecked( true );
+ dialog_->centerTabs->setChecked( true);
+ dialog_->colorMode->setCurrentItem(0);
+ dialog_->inactiveColorType->setCurrentItem(1);
+ dialog_->customInactiveColor->setColor(colorGroup().background().rgb());
+ // button color stuff
+ dialog_->sliderButtonRed->setValue(sliderButtonRedValue = colorGroup().button().red());
+ dialog_->sliderButtonGreen->setValue(sliderButtonGreenValue = colorGroup().button().green());
+ dialog_->sliderButtonBlue->setValue(sliderButtonBlueValue = colorGroup().button().blue());
+ dialog_->valueButtonRed->setNum(sliderButtonRedValue);
+ dialog_->valueButtonGreen->setNum(sliderButtonGreenValue);
+ dialog_->valueButtonBlue->setNum(sliderButtonBlueValue);
+
+ // special Widgets
+// dialog_->animateSlider;
+ dialog_->shadowSlider->setChecked( false);
+ dialog_->squeezeSlider->setChecked( false);
+ dialog_->unhoveredToolButtons->setCurrentItem(2);
+ dialog_->toolbuttonHighColor->setColor( QColor(103,141,178) );
+ dialog_->drawTreeLines->setChecked( false);
+ dialog_->useCustomExpanderColor->setChecked( false);
+ dialog_->treeLineMode->setCurrentItem(0);
+ dialog_->treeLineColor->setColor( colorGroup().mid().rgb());
+ dialog_->expanderMode->setCurrentItem(0);
+ dialog_->customExpanderColor->setColor( colorGroup().text().rgb());
+ dialog_->useRectLVH->setChecked( false);
+ dialog_->removeKickerBevel->setChecked( true);
+ dialog_->roundTasks->setChecked( false);
+ dialog_->showProgressValue->setChecked( false);
+ dialog_->progressType->setCurrentItem( 0);
+ dialog_->aquaTabs->setCurrentItem( 0 );
+ dialog_->brushedTabs->setCurrentItem(1);
+
+ // menus
+// dialog_->transGroup;
+ dialog_->menuBackground->setCurrentItem(0);
+ dialog_->menuOpacity->setValue( 70);
+ dialog_->shadowMenuText->setChecked( true);
+ dialog_->menuColorMode->setCurrentItem(0);
+ dialog_->menuTextColor->setColor( colorGroup().text().rgb());
+ dialog_->menuTextColorHigh->setColor( colorGroup().highlightedText().rgb());
+ dialog_->menuColor->setColor( colorGroup().background().rgb());
+ dialog_->menuColor2->setColor( colorGroup().background().dark(130).rgb());
+ dialog_->menuColorHigh->setColor( colorGroup().highlight().rgb());
+ dialog_->drawMenuStripe->setChecked(false);
+ dialog_->glossyMenus->setChecked(true);
+ dialog_->menuStripeColor->setColor( Qt::white.rgb());
+
+ // custom colors
+ dialog_->useCustomColors->setChecked( false);
+ dialog_->radioOffColor->setColor( colorGroup().background().rgb());
+ dialog_->radioOnColor->setColor( colorGroup().button().rgb());
+ dialog_->checkOffColor->setColor( colorGroup().background().rgb());
+ dialog_->checkOnColor->setColor( colorGroup().button().rgb());
+ dialog_->sliderColor->setColor( colorGroup().button().rgb());
+ dialog_->hoverSliderColorColor->setColor(colorGroup().button().rgb());
+ dialog_->pressedSliderColor->setColor(colorGroup().button().dark(110).rgb());
+ dialog_->sliderGrooveColor->setColor(colorGroup().background().rgb());
+ dialog_->inactiveTabColor->setColor(colorGroup().background().rgb());
+ dialog_->activeTabColor->setColor(colorGroup().button().rgb());
+ dialog_->tintBrush->setChecked( false);
+ emit changed(true);
+}
+
+void kstyle_baghira_config::save()
+{
+ QString tmpString = QDir::homeDirPath() + "/.qt/baghirarc";
+ save(tmpString);
+// emit changed(true);
+}
+
+void kstyle_baghira_config::changeTooluttonHighlightColor(const QColor & color)
+{
+ KConfig *config = new KConfig("kdeglobals");
+ config->setGroup( "Toolbar style" );
+ config->writeEntry("HighlightColor", color);
+ delete config;
+}
+
+void kstyle_baghira_config::handleButtonStyles(int i)
+{
+ if (i != 2 && sender() == dialog_->buttonStyle && dialog_->toolbuttonStyle->currentItem() != 2)
+ dialog_->toolbuttonStyle->setCurrentItem(i);
+ else if (i != 2 && sender() == dialog_->toolbuttonStyle && dialog_->buttonStyle->currentItem() != 2)
+ dialog_->buttonStyle->setCurrentItem(i);
+ configChanged();
+}
+
+void kstyle_baghira_config::save(QString &fileName)
+{
+// QSettings *config = new QSettings;
+ KConfig *config = new KConfig(fileName);
+ config->setGroup("BAB");
+ //General Design
+ config->writeEntry("defaultState", dialog_->defaultStyle->currentItem());
+// config->endGroup();
+ config->setGroup("Style");
+ config->writeEntry("Special_ButtonStyle", dialog_->buttonStyle->currentItem());
+ config->writeEntry("Special_ToolbuttonStyle", dialog_->toolbuttonStyle->currentItem());
+ config->writeEntry("Design_AnimateButtons", dialog_->animateButtons->isOn());
+ config->writeEntry("Design_Default", dialog_->defaultStyle->currentItem());
+ config->writeEntry("Design_StippleBackground", dialog_->stippleBackground->isOn());
+ config->writeEntry("Design_StippleContrast", dialog_->stippleContrast->value());
+ config->writeEntry("Design_ShadowGroupBoxes", dialog_->shadowGroups->isOn());
+ config->writeEntry("Design_GroupBoxeShadowDarkness", dialog_->shadowIntensity->value());
+ config->writeEntry("Design_BevelAsHighlight", dialog_->bevelHighlights->isOn());
+ config->writeEntry("Design_ButtonStyle", dialog_->colorMode->currentItem());
+ config->writeEntry("Design_InactiveButtonStyle", dialog_->inactiveColorType->currentItem());
+ config->writeEntry("Design_InactiveButtonColor", (int)dialog_->customInactiveColor->color().rgb());
+ config->writeEntry("Design_CenterTabs", dialog_->centerTabs->isOn());
+ //button color stuff
+ config->writeEntry("Design_ButtonColor", (int)(QColor(sliderButtonRedValue, sliderButtonGreenValue, sliderButtonBlueValue).rgb()));
+
+ // special Widgets
+ //listviews
+// dialog_->animateSlider;
+ config->writeEntry("Special_UseFlatLVH", dialog_->useRectLVH->isOn());
+ config->writeEntry("Special_DrawTreeLines", dialog_->drawTreeLines->isOn());
+ config->writeEntry("Special_TreelineStyle", dialog_->treeLineMode->currentItem());
+ config->writeEntry("Special_TreelineColor", (int)dialog_->treeLineColor->color().rgb());
+ config->writeEntry("Special_ExpanderStyle", dialog_->expanderMode->currentItem());
+ config->writeEntry("Special_CustomExpanderColor", dialog_->useCustomExpanderColor->isOn());
+ config->writeEntry("Special_ExpanderColor", (int)dialog_->customExpanderColor->color().rgb());
+ //Kicker
+ config->writeEntry("Special_RemoveKickerBevel", dialog_->removeKickerBevel->isOn());
+ config->writeEntry("Special_RoundTaskbuttons", dialog_->roundTasks->isOn());
+ QDir tmpDir(QDir::homeDirPath() + "/.kde");
+ if (!tmpDir.exists()) tmpDir.mkdir(QDir::homeDirPath() + "/.kde");
+ tmpDir.setPath(QDir::homeDirPath() + "/.kde/share");
+ if (!tmpDir.exists()) tmpDir.mkdir(QDir::homeDirPath() + "/.kde/share");
+ tmpDir.setPath(QDir::homeDirPath() + "/.kde/share/apps");
+ if (!tmpDir.exists()) tmpDir.mkdir(QDir::homeDirPath() + "/.kde/share/apps");
+ tmpDir.setPath(QDir::homeDirPath() + "/.kde/share/apps/kicker");
+ if (!tmpDir.exists()) tmpDir.mkdir(QDir::homeDirPath() + "/.kde/share/apps/kicker");
+ tmpDir.setPath(QDir::homeDirPath() + "/.kde/share/apps/kicker/applets");
+ if (!tmpDir.exists()) tmpDir.mkdir(QDir::homeDirPath() + "/.kde/share/apps/kicker/applets");
+ QFile file(QDir::homeDirPath() + "/.kde/share/apps/kicker/applets/menuapplet.desktop");
+ if (dialog_->replaceMenubar->isOn())
+ {
+ file.open(IO_WriteOnly);
+ const char *msg =
+"[Desktop Entry]\n\
+Hidden=true\n\
+Type=Plugin\n\
+Encoding=UTF-8\n\
+Name=BaghiraMenu\n\
+X-KDE-Library=b_menu_panelapplet\n\
+X-KDE-UniqueApplet=true\n";
+ file.writeBlock( msg, qstrlen(msg) );
+ file.close();
+ }
+ else
+ file.remove();
+ if (dialog_->replaceMenubar->isOn() != menuReplaced)
+ KApplication::dcopClient()->send("kicker", "default", "restart()", "");
+ //Srollbars
+ config->writeEntry("Special_AnimateSlider", dialog_->animateSlider->isOn());
+ config->writeEntry("Special_ShadowSlider", dialog_->shadowSlider->isOn());
+ config->writeEntry("Special_SqueezeSlider", dialog_->squeezeSlider->isOn());
+ //Progress
+ config->writeEntry("Special_ProgressStyle", dialog_->progressType->currentItem());
+ config->writeEntry("Special_ShowProgressValue", dialog_->showProgressValue->isOn());
+ //Toolbars
+ config->writeEntry("Special_UnhoveredToolButtons", dialog_->unhoveredToolButtons->currentItem());
+ //Tabs
+ config->writeEntry("Design_TabStyleAqua", dialog_->aquaTabs->currentItem() );
+ config->writeEntry("Design_TabStyleBrushed", dialog_->brushedTabs->currentItem() );
+ // menus
+ config->writeEntry("Menu_Background", dialog_->menuBackground->currentItem());
+ config->writeEntry("Menu_Opacity", dialog_->menuOpacity->value());
+ //Look
+ config->writeEntry("Menu_ShadowText", dialog_->shadowMenuText->isOn());
+ config->writeEntry("Menu_ColorStyle", dialog_->menuColorMode->currentItem());
+ config->writeEntry("Menu_TextColor", (int)dialog_->menuTextColor->color().rgb());
+ config->writeEntry("Menu_TextColorHighlight", (int)dialog_->menuTextColorHigh->color().rgb());
+ config->writeEntry("Menu_Color1", (int)dialog_->menuColor->color().rgb());
+ config->writeEntry("Menu_Color2", (int)dialog_->menuColor2->color().rgb());
+ config->writeEntry("Menu_ColorHighlight", (int)dialog_->menuColorHigh->color().rgb());
+ config->writeEntry("Menu_DrawMenuStripe", dialog_->drawMenuStripe->isOn());
+ config->writeEntry("Menu_Glossy", dialog_->glossyMenus->isOn());
+ config->writeEntry("Menu_StripeColor", (int)dialog_->menuStripeColor->color().rgb());
+
+ // custom colors
+ config->writeEntry("Colors_UseCustomColors", dialog_->useCustomColors->isOn());
+ config->writeEntry("Colors_RadioOff", (int)dialog_->radioOffColor->color().rgb());
+ config->writeEntry("Colors_RadioOn", (int)dialog_->radioOnColor->color().rgb());
+ config->writeEntry("Colors_CheckOff",(int) dialog_->checkOffColor->color().rgb());
+ config->writeEntry("Colors_CheckOn", (int)dialog_->checkOnColor->color().rgb());
+ config->writeEntry("Colors_Slider",(int) dialog_->sliderColor->color().rgb());
+ config->writeEntry("Colors_SliderHovered", (int)dialog_->hoverSliderColorColor->color().rgb());
+ config->writeEntry("Colors_SliderPressed", (int)dialog_->pressedSliderColor->color().rgb());
+ config->writeEntry("Colors_SliderGroove",(int) dialog_->sliderGrooveColor->color().rgb());
+ config->writeEntry("Colors_TabInactive",(int) dialog_->inactiveTabColor->color().rgb());
+ config->writeEntry("Colors_TabActive", (int)dialog_->activeTabColor->color().rgb());
+ config->writeEntry("Colors_TintBrushedMetal", dialog_->tintBrush->isOn());
+ config->writeEntry("Colors_BrushTint",(int)qRgb(sliderBrushRedValue, sliderBrushGreenValue, sliderBrushBlueValue));
+ config->setGroup("Menubar");
+ config->writeEntry("Width", dialog_->menuMaxWidth->value());
+ config->sync();
+// config->endGroup();
+ delete config;
+}
+
+
+void kstyle_baghira_config::configChanged()
+{
+ if (loadDone)
+ {
+ dialog_->statusWarning->setText("Config changed");
+ emit changed(true);
+ }
+}
+
+
+QString kstyle_baghira_config::quickHelp() const
+{
+ return i18n("Configure Your Cat");
+}
+
+void kstyle_baghira_config::setDesign(int d)
+{
+ bool b = (d == 0);
+ dialog_->stippleBackground->setEnabled(b);
+ dialog_->stippleContrast->setEnabled(b);
+ dialog_->shadowGroups->setEnabled(b);
+ dialog_->shadowIntensity->setEnabled(b);
+}
+
+void kstyle_baghira_config::enableInButtonColor(int d)
+{
+ dialog_->customInactiveColor->setEnabled(d == 3);
+}
+
+void kstyle_baghira_config::enableMenuColorStuff(int d)
+{
+ bool b = (d == 2);
+ dialog_->menuTextColor->setEnabled(b);
+ dialog_->menuColor->setEnabled(b && dialog_->menuBackground->currentItem() > 0);
+ dialog_->menuColor2->setEnabled(b && dialog_->menuBackground->currentItem() > 1);
+}
+
+void kstyle_baghira_config::buttonLoadAction()
+{
+ QString tmpString = KFileDialog::getOpenFileName(QDir::homeDirPath(), "*", this, "Select a Baghira config file");
+ if (!tmpString.isEmpty())
+ load(tmpString);
+}
+
+void kstyle_baghira_config::buttonSaveAsAction()
+{
+ QString tmpString = KFileDialog::getSaveFileName(QDir::homeDirPath(), "*", this, "Save current Baghira configuration as");
+ save(tmpString);
+}
+
+void kstyle_baghira_config::editApp()
+{
+ emit editApp(applist->currentItem()->text(0), applist->currentItem()->text(1));
+}
+
+void kstyle_baghira_config::removeApp()
+{
+ QString string = QDir::homeDirPath() + "/.baghira/" + applist->currentItem()->text(0);
+ QFile::remove(string);
+ applist->takeItem(applist->currentItem());
+}
+
+void kstyle_baghira_config::removeApp(QString name)
+{
+ QString string = QDir::homeDirPath() + "/.baghira/" + name;
+ QFile::remove(string);
+ applist->takeItem(applist->findItem(name, 0, Qt::ExactMatch));
+}
+
+void kstyle_baghira_config::addApp(QString string, QString linkString)
+{
+ applist->insertItem(new KListViewItem(applist, string, linkString));
+ applist->sort();
+}
+
+void kstyle_baghira_config::selectWindow()
+// taken from kcmkwin
+{
+ // use a dialog, so that all user input is blocked
+ // use WX11BypassWM and moving away so that it's not actually visible
+ // grab only mouse, so that keyboard can be used e.g. for switching windows
+ grabber = new QDialog( NULL, NULL, true, WX11BypassWM );
+ grabber->move( -1000, -1000 );
+ grabber->show();
+ grabber->grabMouse( crossCursor );
+ grabber->installEventFilter( this );
+}
+
+Atom wm_state = XInternAtom( qt_xdisplay(), "WM_STATE", False );
+// Atom wm_state = XInternAtom( qt_xdisplay(), "WM_COMMAND", False );
+
+bool kstyle_baghira_config::eventFilter( QObject* o, QEvent* e )
+// adapted from kcmkwin... again ;)
+{
+ if( o != grabber )
+ return false;
+ if( e->type() != QEvent::MouseButtonRelease )
+ return false;
+ delete grabber;
+ grabber = NULL;
+ if( static_cast< QMouseEvent* >( e )->button() != LeftButton )
+ return true;
+ WId winId = findWindow();
+ XClassHint classHint;
+ if (XGetClassHint(qt_xdisplay(), winId, &classHint))
+ {
+ QString tmpString = QString( classHint.res_class ).lower() + " (uncertain)";
+ appsetter->show(tmpString, QString());
+// qWarning("class: %s",QString( classHint.res_class ).lower().ascii());
+ XFree( classHint.res_name );
+ XFree( classHint.res_class );
+ }
+ return true;
+}
+
+WId kstyle_baghira_config::findWindow()
+// taken from kcmkwin... as well =)
+{
+ Window root;
+ Window child;
+ uint mask;
+ int rootX, rootY, x, y;
+ Window parent = qt_xrootwin();
+// Atom wm_state = XInternAtom( qt_xdisplay(), "WM_STATE", False );
+ for( int i = 0;
+ i < 10;
+ ++i )
+ {
+ XQueryPointer( qt_xdisplay(), parent, &root, &child,
+ &rootX, &rootY, &x, &y, &mask );
+ if( child == None )
+ return 0;
+ Atom type;
+ int format;
+ unsigned long nitems, after;
+ unsigned char* prop;
+ if( XGetWindowProperty( qt_xdisplay(), child, wm_state, 0, 0, False, AnyPropertyType, &type, &format, &nitems, &after, &prop ) == Success )
+ {
+ if( prop != NULL )
+ XFree( prop );
+ if( type != None )
+ return child;
+ }
+ parent = child;
+ }
+ return 0;
+}
+
+
+void kstyle_baghira_config::menuToggled(bool active)
+{
+ if (!active || !loadDone)
+ return;
+ KConfigGroup menuConfig(KGlobal::config(), "KDE");
+ if (!menuConfig.readBoolEntry("macStyle", false))
+ if (KMessageBox::questionYesNo(0, i18n("<qt>You just selected to replace kickers menu applet for the Mac like Menubar on top of the screen, but the Mac like style isn't selected anyway<br>Do you want to activate it now?</qt>"), 0L, KStdGuiItem::yes(), KStdGuiItem::no()) == KMessageBox::Yes)
+ {
+ KProcess proc;
+ proc << "kcmshell" << "desktopbehavior";
+ proc.start(KProcess::DontCare);
+ proc.detach();
+ }
+ configChanged();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// Plugin Stuff //
+//////////////////////////////////////////////////////////////////////////////
+
+extern "C"
+{
+ QWidget* allocate_kstyle_config(QWidget* parent){
+ return(new kstyle_baghira_config(parent, "BaghiraConfig"));
+ }
+}
+
+AppSetter::AppSetter(QWidget *parent, const char *name) : QWidget(parent, name, Qt::WType_Dialog | Qt::WShowModal )
+{
+ isEdit = FALSE;
+
+ QLabel *label1 = new QLabel(i18n("<qt><b>Application Name</b></qt>"), this);
+ command = new QLineEdit(this);
+
+ QLabel *linkTo = new QLabel(i18n("<qt><b>Just like</b></qt>"),this);
+ link = new QComboBox(this);
+
+ box = new QGroupBox(2,Qt::Horizontal,i18n("Custom Settings"),this);
+ box->setCheckable( true );
+
+ new QLabel(i18n("<qt><b>Style</b></qt>"), box);
+ new QLabel("<qt><b>Deco</b></qt>", box);
+
+ style = new QComboBox(box);
+ style->insertItem(i18n("Don't set"));
+ style->insertItem("Jaguar");
+ style->insertItem("Panther");
+ style->insertItem("Brushed Metal");
+ style->insertItem("Tiger");
+ style->insertItem("Milk");
+
+ deco = new QComboBox(box);
+ deco->insertItem(i18n("Don't set"));
+ deco->insertItem("Jaguar");
+ deco->insertItem("Panther");
+ deco->insertItem("Brushed Metal");
+ deco->insertItem("Tiger");
+ deco->insertItem("Milk");
+
+ new QLabel(i18n("<qt><b>Buttons</b></qt>"), box);
+ new QLabel(i18n("<qt><b>Toolbuttons</b></qt>"), box);
+
+ buttons = new QComboBox(box);
+ buttons->insertItem("Jaguar");
+ buttons->insertItem("Panther");
+ buttons->insertItem("iTunes");
+ buttons->insertItem("Tiger");
+ buttons->insertItem("Milk");
+
+
+ toolButtons = new QComboBox(box);
+ toolButtons->insertItem("Jaguar");
+ toolButtons->insertItem("Panther");
+ toolButtons->insertItem("iTunes");
+ toolButtons->insertItem("Tiger");
+ toolButtons->insertItem("Milk");
+
+ new QLabel(i18n("<qt><b>Tab vs. Chooser</b></qt>"), box);
+ new QLabel(i18n("<qt>Inactive Button</qt>"), box);
+
+ tabs = new QComboBox(box);
+ tabs->insertItem(i18n("Don't set"));
+ tabs->insertItem("Tabs");
+ tabs->insertItem("Adaptive");
+ tabs->insertItem("Choosers");
+
+
+ inbutton = new QComboBox(box);
+ inbutton->insertItem("Fixed");
+ inbutton->insertItem("Background");
+ inbutton->insertItem("Active Button");
+
+ scanlines = new QCheckBox("Show scanlines", box);
+
+ QWidget *dumb = new QWidget(box);
+ customColors = new QCheckBox(dumb);
+ buttonColors = new QPushButton("Custom Colors", dumb);
+ QHBoxLayout *clh = new QHBoxLayout(dumb);
+ clh->addWidget(customColors);
+ clh->addWidget(buttonColors);
+
+ QVBoxLayout *lv = new QVBoxLayout(this,11,6);
+ lv->addWidget(label1);
+ lv->addWidget(command);
+ QHBoxLayout *lh0 = new QHBoxLayout(lv);
+ lh0->addWidget(linkTo);
+ lh0->addWidget(link);
+ lv->addWidget(box);
+ QHBoxLayout *lh = new QHBoxLayout(lv);
+ QPushButton *cancel = new QPushButton("Cancel",this);
+ lh->addWidget(cancel);
+ QPushButton *ok = new QPushButton("Ok",this);
+ lh->addWidget(ok);
+
+ colorDialog = new ColorDialog(this);
+
+ connect(box, SIGNAL(toggled( bool )), link, SLOT(setDisabled(bool)));
+ connect(box, SIGNAL(toggled( bool )), linkTo, SLOT(setDisabled(bool)));
+ connect(style, SIGNAL(activated( int )), this, SLOT(handler(int)));
+ connect(buttons, SIGNAL(activated( int )), this, SLOT(handleButtonStyles(int)));
+ connect(toolButtons, SIGNAL(activated( int )), this, SLOT(handleButtonStyles(int)));
+ connect(cancel, SIGNAL(clicked()), this, SLOT(reset()));
+ connect(ok, SIGNAL(clicked()), this, SLOT(save()));
+ connect(customColors, SIGNAL(toggled( bool )), buttonColors, SLOT(setEnabled(bool)));
+ connect(buttonColors, SIGNAL(clicked()), colorDialog, SLOT(exec()));
+ connect(colorDialog->buttonOk, SIGNAL(clicked()), this, SLOT(updateColors()));
+ connect(colorDialog->buttonCancel, SIGNAL(clicked()), this, SLOT(resetColorPicker()));
+ reset();
+}
+
+AppSetter::~AppSetter()
+{
+}
+
+void AppSetter::handleButtonStyles(int i)
+{
+ if (i != 2 && sender() == buttons && toolButtons->currentItem() != 2)
+ toolButtons->setCurrentItem(i);
+ else if (i != 2 && sender() == toolButtons && buttons->currentItem() != 2)
+ buttons->setCurrentItem(i);
+}
+
+void AppSetter::handler(int i)
+{
+ scanlines->setEnabled(i != 3);
+}
+
+void AppSetter::updateColors()
+{
+ for (int i = 0; i < 8; i++)
+ colors[i] = (int)colorDialog->picker[i]->color().rgb();
+}
+
+void AppSetter::show()
+{
+ link->clear();
+ QDir d( QDir::homeDirPath() + "/.baghira", 0L, QDir::Name | QDir::IgnoreCase, QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::Writable );
+ for ( uint i = 0; i < d.count(); i++ )
+ link->insertItem(d[i]);
+ QWidget::show();
+}
+
+void AppSetter::show(QString appName, QString linkString)
+{
+ isEdit = true;
+ oldName = appName;
+ oldLink = linkString;
+ command->setText(appName);
+ FILE *file = NULL;
+ QString tmpString = QDir::homeDirPath() + "/.baghira/" + appName;
+ if( (file = fopen(tmpString.latin1(), "r")) != NULL )
+ {
+ uint s, d, b, t, tc, sc, ib;
+ s = d = 4;
+ b = t = sc = 2;
+ tc = 3;
+ for (int i = 0; i < 8; i++)
+ colors[i] = -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",&s,&d,&b,&t,&tc,&sc,&colors[0],&colors[1],&colors[2],&colors[3],&colors[4],&colors[5],&colors[6],&colors[7],&ib);
+ fclose(file);
+ if (s < 5) style->setCurrentItem(s+1);
+ if (d < 5) deco->setCurrentItem(d+1);
+ if (b < 5) buttons->setCurrentItem(b);
+ if (t < 5) toolButtons->setCurrentItem(t);
+ if (tc < 3) tabs->setCurrentItem(tc+1);
+ if (ib < 3) inbutton->setCurrentItem(ib);
+ scanlines->setChecked(sc < 2 ? sc : true);
+ scanlines->setEnabled(s != 2);
+ customColors->setChecked(colors[0] != -1);
+ buttonColors->setEnabled(customColors->isChecked());
+ resetColorPicker();
+ }
+ show();
+ if (!linkString.isNull())
+ {
+ for (int i = 0; i < link->count(); i++)
+ {
+ if (link->text(i) == linkString)
+ {
+ link->setCurrentItem(i);
+ break;
+ }
+ }
+ }
+ else
+ {
+ box->setChecked(true);
+ }
+}
+
+void AppSetter::resetColorPicker()
+{
+ if (colors[0] != -1)
+ {
+ for (int i = 0; i < 8; i++)
+ {
+ colorDialog->picker[i]->blockSignals(true);
+ colorDialog->picker[i]->setColor(QColor(colors[i]));
+ colorDialog->picker[i]->blockSignals(false);
+ }
+ ((QWidget*)colorDialog->demo)->repaint(false);
+ }
+ else
+ {
+ for (int i = 0; i < 8; i++)
+ colorDialog->picker[i]->blockSignals(true);
+ colorDialog->picker[Back]->setColor(colorGroup().background());
+ colorDialog->picker[Button]->setColor(colorGroup().button());
+ colorDialog->picker[Base]->setColor(colorGroup().base());
+ colorDialog->picker[Text]->setColor(colorGroup().text());
+ colorDialog->picker[High]->setColor(colorGroup().highlight());
+ colorDialog->picker[HighText]->setColor(colorGroup().highlightedText());
+ colorDialog->picker[ButText]->setColor(colorGroup().buttonText ());
+ colorDialog->picker[Alternate]->setColor(KGlobalSettings::alternateBackgroundColor());
+ for (int i = 0; i < 8; i++)
+ colorDialog->picker[i]->blockSignals(false);
+ ((QWidget*)colorDialog->demo)->repaint(false);
+ }
+}
+
+void AppSetter::save()
+{
+ if (command->text() != "" && (!box->isChecked() || (style->currentItem() != 0 && deco->currentItem() != 0)))
+ {
+ if (!isEdit)
+ emit addApp(command->text(), box->isChecked() ? QString() : link->currentText());
+ else if (command->text() != oldName || link->currentText() != oldLink)
+ {
+ emit removeApp(oldName);
+ emit addApp(command->text(), box->isChecked() ? QString() : link->currentText());
+ }
+ if (!customColors->isChecked())
+ {
+ for (int i = 0; i < 8; i++)
+ colors[i] = -1;
+ }
+ FILE *file = NULL;
+ QString tmpString = QDir::homeDirPath() + "/.baghira/" + command->text();
+ if (box->isChecked()) // custom settings
+ {
+ if( (file = fopen(tmpString.latin1(), "w")) != NULL )
+ {
+ fprintf(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->currentItem()-1, deco->currentItem()-1, buttons->currentItem(), toolButtons->currentItem(), tabs->currentItem()-1, scanlines->isChecked(), colors[0], colors[1], colors[2], colors[3], colors[4], colors[5], colors[6], colors[7], inbutton->currentItem());
+ fclose(file);
+ }
+ }
+ else // just link
+ {
+ QString tmpString2 = QDir::homeDirPath() + "/.baghira/" + link->currentText();
+ QFile::remove(tmpString); // just to be sure ;)
+ symlink (tmpString2.latin1(), tmpString.latin1());
+ }
+ }
+ reset();
+}
+
+void AppSetter::reset()
+{
+ hide();
+ isEdit = false;
+ style->setCurrentItem(0);
+ deco->setCurrentItem(0);
+ buttons->setCurrentItem(1);
+ inbutton->setCurrentItem(0);
+ toolButtons->setCurrentItem(1);
+ tabs->setCurrentItem(0);
+ scanlines->setChecked(false);
+ command->clear();
+ customColors->setChecked(false);
+ for (int i = 0; i < 8; i++)
+ colors[i] = -1;
+ box->setChecked ( false );
+}
+
+#include "kstyle_baghira_config.moc"