Added a configuration library for the glow style. For now, one can only
adjust the glow color of the title buttons. svn path=/trunk/kdebase/kwin/; revision=114496icc-effect-5.14.5
parent
0c3d123a45
commit
0e06f229cf
|
@ -0,0 +1,19 @@
|
|||
INCLUDES = $(all_includes)
|
||||
|
||||
kde_module_LTLIBRARIES = libkwinglow_config.la
|
||||
|
||||
libkwinglow_config_la_SOURCES = glowconfigdialog.cpp
|
||||
libkwinglow_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
|
||||
libkwinglow_config_la_LIBADD = $(LIB_KDEUI)
|
||||
|
||||
METASOURCES = AUTO
|
||||
noinst_HEADERS = glowconfigdialog.h
|
||||
|
||||
lnkdir = $(kde_datadir)/kwin/
|
||||
|
||||
messages:
|
||||
$(XGETTEXT) *.cpp -o $(podir)/libkwinglow_config.pot
|
||||
|
||||
###KMAKE-start (don't edit or delete this block)
|
||||
|
||||
###KMAKE-end
|
|
@ -0,0 +1,370 @@
|
|||
/***************************************************************************
|
||||
glowconfigdialog.cpp - description
|
||||
-------------------
|
||||
begin : Thu Sep 12 2001
|
||||
copyright : (C) 2001 by Henning Burchardt
|
||||
email : h_burchardt@gmx.de
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qcheckbox.h>
|
||||
#include <qgroupbox.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include <qlayout.h>
|
||||
#include <qabstractlayout.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qbitmap.h>
|
||||
#include <qsignalmapper.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <kglobal.h>
|
||||
#include <kconfig.h>
|
||||
#include <klocale.h>
|
||||
#include <kcolorbutton.h>
|
||||
|
||||
#include "glowconfigdialog.h"
|
||||
#include "../bitmaps.h"
|
||||
|
||||
#define DEFAULT_BUTTON_COLOR Qt::white
|
||||
#define DEFAULT_CLOSE_BUTTON_COLOR Qt::red
|
||||
|
||||
extern "C"
|
||||
{
|
||||
QObject* allocate_config( KConfig* conf, QWidget* parent )
|
||||
{
|
||||
return(new GlowConfigDialog(conf, parent));
|
||||
}
|
||||
}
|
||||
|
||||
GlowConfigDialog::GlowConfigDialog( KConfig * conf, QWidget * parent )
|
||||
: QObject(parent)
|
||||
{
|
||||
m_glowConfig = new KConfig("kwinglowrc");
|
||||
KGlobal::locale()->insertCatalogue("libkwinglow_config");
|
||||
|
||||
m_mainGroupBox = new QGroupBox(
|
||||
1, Qt::Vertical, i18n("Decoration Settings"), parent);
|
||||
|
||||
QGroupBox *buttonGlowColorGroupBox = new QGroupBox(
|
||||
0, Qt::Vertical, i18n("Glow Colors"), m_mainGroupBox);
|
||||
|
||||
QHBoxLayout *buttonGlowColorGroupBoxLayout =
|
||||
new QHBoxLayout(buttonGlowColorGroupBox->layout());
|
||||
|
||||
QVBoxLayout *buttonLayout = new QVBoxLayout(3);
|
||||
|
||||
// create buttons
|
||||
QSize buttonSize(DEFAULT_BITMAP_SIZE, DEFAULT_BITMAP_SIZE);
|
||||
QPixmap pm(buttonSize);
|
||||
pm.fill(Qt::black);
|
||||
|
||||
m_stickyButton = new QPushButton(buttonGlowColorGroupBox);
|
||||
pm.setMask(QBitmap(buttonSize, stickyoff_bits, true));
|
||||
m_stickyButton->setPixmap(pm);
|
||||
buttonLayout->addWidget(m_stickyButton);
|
||||
m_titleButtonList.push_back(m_stickyButton);
|
||||
|
||||
m_helpButton = new QPushButton(buttonGlowColorGroupBox);
|
||||
pm.setMask(QBitmap(buttonSize, help_bits, true));
|
||||
m_helpButton->setPixmap(pm);
|
||||
buttonLayout->addWidget(m_helpButton);
|
||||
m_titleButtonList.push_back(m_helpButton);
|
||||
|
||||
m_iconifyButton = new QPushButton(buttonGlowColorGroupBox);
|
||||
pm.setMask(QBitmap(buttonSize, minimize_bits, true));
|
||||
m_iconifyButton->setPixmap(pm);
|
||||
buttonLayout->addWidget(m_iconifyButton);
|
||||
m_titleButtonList.push_back(m_iconifyButton);
|
||||
|
||||
m_maximizeButton = new QPushButton(buttonGlowColorGroupBox);
|
||||
pm.setMask(QBitmap(buttonSize, maximizeoff_bits, true));
|
||||
m_maximizeButton->setPixmap(pm);
|
||||
buttonLayout->addWidget(m_maximizeButton);
|
||||
m_titleButtonList.push_back(m_maximizeButton);
|
||||
|
||||
m_closeButton = new QPushButton(buttonGlowColorGroupBox);
|
||||
pm.setMask(QBitmap(buttonSize, close_bits, true));
|
||||
m_closeButton->setPixmap(pm);
|
||||
buttonLayout->addWidget(m_closeButton);
|
||||
m_titleButtonList.push_back(m_closeButton);
|
||||
|
||||
// create signal mapper
|
||||
m_titleButtonMapper = new QSignalMapper(this);
|
||||
for( int i=0; i<m_titleButtonList.size(); i++ )
|
||||
{
|
||||
m_titleButtonMapper->setMapping(m_titleButtonList[i], i);
|
||||
QObject::connect(m_titleButtonList[i], SIGNAL(clicked()),
|
||||
m_titleButtonMapper, SLOT(map()));
|
||||
}
|
||||
QObject::connect(m_titleButtonMapper, SIGNAL(mapped(int)),
|
||||
this, SLOT(slotTitleButtonClicked(int)));
|
||||
|
||||
buttonGlowColorGroupBoxLayout->addLayout(buttonLayout);
|
||||
buttonGlowColorGroupBoxLayout->addSpacing(20);
|
||||
|
||||
QGroupBox *innerButtonGlowColorGroupBox = new QGroupBox(
|
||||
0, Qt::Vertical, buttonGlowColorGroupBox);
|
||||
|
||||
QGridLayout *innerButtonGlowColorGroupBoxLayout = new QGridLayout(
|
||||
innerButtonGlowColorGroupBox->layout(), 3, 2);
|
||||
innerButtonGlowColorGroupBoxLayout->setAlignment(
|
||||
Qt::AlignTop | Qt::AlignLeft);
|
||||
|
||||
// create color radio buttons
|
||||
m_titleBarColorButton = new QRadioButton(
|
||||
i18n("Title bar color"), innerButtonGlowColorGroupBox);
|
||||
m_colorRadioButtonList.push_back(m_titleBarColorButton);
|
||||
innerButtonGlowColorGroupBoxLayout->addWidget(
|
||||
m_titleBarColorButton, 0, 0);
|
||||
|
||||
m_titleBlendColorButton = new QRadioButton(
|
||||
i18n("Title blend color"), innerButtonGlowColorGroupBox);
|
||||
m_colorRadioButtonList.push_back(m_titleBlendColorButton);
|
||||
innerButtonGlowColorGroupBoxLayout->addWidget(
|
||||
m_titleBlendColorButton, 1, 0);
|
||||
|
||||
m_customColorButton = new QRadioButton(
|
||||
i18n("Custom color"), innerButtonGlowColorGroupBox);
|
||||
m_colorRadioButtonList.push_back(m_customColorButton);
|
||||
innerButtonGlowColorGroupBoxLayout->addWidget(
|
||||
m_customColorButton, 2, 0);
|
||||
|
||||
m_colorRadioButtonMapper = new QSignalMapper(this);
|
||||
for(int i=0; i<m_colorRadioButtonList.size(); i++ )
|
||||
{
|
||||
m_colorRadioButtonMapper->setMapping(m_colorRadioButtonList[i], i);
|
||||
QObject::connect(m_colorRadioButtonList[i], SIGNAL(clicked()),
|
||||
m_colorRadioButtonMapper, SLOT(map()));
|
||||
}
|
||||
QObject::connect(m_colorRadioButtonMapper, SIGNAL(mapped(int)),
|
||||
this, SLOT(slotColorRadioButtonClicked(int)));
|
||||
|
||||
m_colorButton = new KColorButton(innerButtonGlowColorGroupBox);
|
||||
innerButtonGlowColorGroupBoxLayout->addWidget(
|
||||
m_colorButton, 2, 1);
|
||||
|
||||
buttonGlowColorGroupBoxLayout->addWidget(innerButtonGlowColorGroupBox);
|
||||
buttonGlowColorGroupBoxLayout->addItem(new QSpacerItem(
|
||||
20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
|
||||
|
||||
// load config and update user interface
|
||||
load(conf);
|
||||
|
||||
m_mainGroupBox->show();
|
||||
}
|
||||
|
||||
GlowConfigDialog::~GlowConfigDialog()
|
||||
{
|
||||
delete m_mainGroupBox;
|
||||
}
|
||||
|
||||
void GlowConfigDialog::load( KConfig* conf )
|
||||
{
|
||||
m_glowConfig->setGroup("General");
|
||||
|
||||
QColor defaultButtonColor = DEFAULT_BUTTON_COLOR;
|
||||
QColor defaultCloseButtonColor = DEFAULT_CLOSE_BUTTON_COLOR;
|
||||
struct ButtonConfig cnf;
|
||||
|
||||
cnf.glowType = m_glowConfig->readEntry(
|
||||
"stickyButtonGlowType", "TitleBar");
|
||||
cnf.glowColor = m_glowConfig->readColorEntry(
|
||||
"stickyButtonGlowColor", &defaultButtonColor);
|
||||
m_buttonConfigMap["stickyButton"] = cnf;
|
||||
|
||||
cnf.glowType = m_glowConfig->readEntry(
|
||||
"helpButtonGlowType", "TitleBar");
|
||||
cnf.glowColor = m_glowConfig->readColorEntry(
|
||||
"helpButtonGlowColor", &defaultButtonColor);
|
||||
m_buttonConfigMap["helpButton"] = cnf;
|
||||
|
||||
cnf.glowType = m_glowConfig->readEntry(
|
||||
"iconifyButtonGlowType", "TitleBar");
|
||||
cnf.glowColor = m_glowConfig->readColorEntry(
|
||||
"iconifyButtonGlowColor", &defaultButtonColor);
|
||||
m_buttonConfigMap["iconifyButton"] = cnf;
|
||||
|
||||
cnf.glowType = m_glowConfig->readEntry(
|
||||
"maximizeButtonGlowType", "TitleBar");
|
||||
cnf.glowColor = m_glowConfig->readColorEntry(
|
||||
"maximizeButtonGlowColor", &defaultButtonColor);
|
||||
m_buttonConfigMap["maximizeButton"] = cnf;
|
||||
|
||||
cnf.glowType = m_glowConfig->readEntry(
|
||||
"closeButtonGlowType", "Custom");
|
||||
cnf.glowColor = m_glowConfig->readColorEntry(
|
||||
"closeButtonGlowColor", &defaultCloseButtonColor);
|
||||
m_buttonConfigMap["closeButton"] = cnf;
|
||||
|
||||
updateUI();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::save( KConfig *conf )
|
||||
{
|
||||
updateConfig();
|
||||
|
||||
m_glowConfig->setGroup("General");
|
||||
|
||||
struct ButtonConfig cnf;
|
||||
|
||||
cnf = m_buttonConfigMap["stickyButton"];
|
||||
m_glowConfig->writeEntry("stickyButtonGlowType", cnf.glowType);
|
||||
m_glowConfig->writeEntry("stickyButtonGlowColor", cnf.glowColor);
|
||||
|
||||
cnf = m_buttonConfigMap["helpButton"];
|
||||
m_glowConfig->writeEntry("helpButtonGlowType", cnf.glowType);
|
||||
m_glowConfig->writeEntry("helpButtonGlowColor", cnf.glowColor);
|
||||
|
||||
cnf = m_buttonConfigMap["iconifyButton"];
|
||||
m_glowConfig->writeEntry("iconifyButtonGlowType", cnf.glowType);
|
||||
m_glowConfig->writeEntry("iconifyButtonGlowColor", cnf.glowColor);
|
||||
|
||||
cnf = m_buttonConfigMap["maximizeButton"];
|
||||
m_glowConfig->writeEntry("maximizeButtonGlowType", cnf.glowType);
|
||||
m_glowConfig->writeEntry("maximizeButtonGlowColor", cnf.glowColor);
|
||||
|
||||
cnf = m_buttonConfigMap["closeButton"];
|
||||
m_glowConfig->writeEntry("closeButtonGlowType", cnf.glowType);
|
||||
m_glowConfig->writeEntry("closeButtonGlowColor", cnf.glowColor);
|
||||
|
||||
m_glowConfig->sync();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::defaults()
|
||||
{
|
||||
QColor defaultButtonColor = DEFAULT_BUTTON_COLOR;
|
||||
QColor defaultCloseButtonColor = DEFAULT_CLOSE_BUTTON_COLOR;
|
||||
struct ButtonConfig cnf;
|
||||
|
||||
cnf.glowType = "TitleBar";
|
||||
cnf.glowColor = defaultButtonColor;
|
||||
|
||||
m_buttonConfigMap["stickyButton"] = cnf;
|
||||
m_buttonConfigMap["helpButton"] = cnf;
|
||||
m_buttonConfigMap["iconifyButton"] = cnf;
|
||||
m_buttonConfigMap["maximizeButton"] = cnf;
|
||||
|
||||
cnf.glowType = "Custom";
|
||||
cnf.glowColor = defaultCloseButtonColor;
|
||||
|
||||
m_buttonConfigMap["closeButton"] = cnf;
|
||||
|
||||
updateUI();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::slotSelectionChanged()
|
||||
{
|
||||
emit changed();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::slotTitleButtonClicked(int index)
|
||||
{
|
||||
updateConfig();
|
||||
for( int i=0; i<m_titleButtonList.size(); i++ )
|
||||
m_titleButtonList[i]->setDown(i==index);
|
||||
updateUI();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::slotColorRadioButtonClicked(int index)
|
||||
{
|
||||
for( int i=0; i<m_colorRadioButtonList.size(); i++ )
|
||||
m_colorRadioButtonList[i]->setChecked(i==index);
|
||||
m_colorButton->setEnabled(
|
||||
m_colorRadioButtonList[index]==m_customColorButton);
|
||||
|
||||
updateConfig();
|
||||
slotSelectionChanged();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::slotColorButtonChanged(const QColor&)
|
||||
{
|
||||
updateConfig();
|
||||
slotSelectionChanged();
|
||||
}
|
||||
|
||||
void GlowConfigDialog::updateUI()
|
||||
{
|
||||
struct ButtonConfig cnf;
|
||||
if( m_stickyButton->isDown() )
|
||||
cnf = m_buttonConfigMap["stickyButton"];
|
||||
else if( m_helpButton->isDown() )
|
||||
cnf = m_buttonConfigMap["helpButton"];
|
||||
else if( m_iconifyButton->isDown() )
|
||||
cnf = m_buttonConfigMap["iconifyButton"];
|
||||
else if( m_maximizeButton->isDown() )
|
||||
cnf = m_buttonConfigMap["maximizeButton"];
|
||||
else if( m_closeButton->isDown() )
|
||||
cnf = m_buttonConfigMap["closeButton"];
|
||||
else
|
||||
{
|
||||
m_stickyButton->setDown(true);
|
||||
cnf = m_buttonConfigMap["stickyButton"];
|
||||
}
|
||||
|
||||
if( cnf.glowType == "TitleBar" )
|
||||
{
|
||||
m_titleBarColorButton->setChecked(true);
|
||||
m_titleBlendColorButton->setChecked(false);
|
||||
m_customColorButton->setChecked(false);
|
||||
}
|
||||
else if( cnf.glowType == "TitleBlend" )
|
||||
{
|
||||
m_titleBarColorButton->setChecked(false);
|
||||
m_titleBlendColorButton->setChecked(true);
|
||||
m_customColorButton->setChecked(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_titleBarColorButton->setChecked(false);
|
||||
m_titleBlendColorButton->setChecked(false);
|
||||
m_customColorButton->setChecked(true);
|
||||
}
|
||||
m_colorButton->setColor(cnf.glowColor);
|
||||
m_colorButton->setEnabled(m_customColorButton->isChecked());
|
||||
}
|
||||
|
||||
void GlowConfigDialog::updateConfig()
|
||||
{
|
||||
QString glowType;
|
||||
if( m_titleBarColorButton->isChecked() )
|
||||
glowType = "TitleBar";
|
||||
else if( m_titleBlendColorButton->isChecked() )
|
||||
glowType = "TitleBlend";
|
||||
else
|
||||
glowType = "Custom";
|
||||
QColor glowColor = m_colorButton->color();
|
||||
if( m_stickyButton->isDown() )
|
||||
{
|
||||
m_buttonConfigMap["stickyButton"].glowType = glowType;
|
||||
m_buttonConfigMap["stickyButton"].glowColor = glowColor;
|
||||
}
|
||||
else if( m_helpButton->isDown() )
|
||||
{
|
||||
m_buttonConfigMap["helpButton"].glowType = glowType;
|
||||
m_buttonConfigMap["helpButton"].glowColor = glowColor;
|
||||
}
|
||||
else if( m_iconifyButton->isDown() )
|
||||
{
|
||||
m_buttonConfigMap["iconifyButton"].glowType = glowType;
|
||||
m_buttonConfigMap["iconifyButton"].glowColor = glowColor;
|
||||
}
|
||||
else if( m_maximizeButton->isDown() )
|
||||
{
|
||||
m_buttonConfigMap["maximizeButton"].glowType = glowType;
|
||||
m_buttonConfigMap["maximizeButton"].glowColor = glowColor;
|
||||
}
|
||||
else // if( m_closeButton->isDown() )
|
||||
{
|
||||
m_buttonConfigMap["closeButton"].glowType = glowType;
|
||||
m_buttonConfigMap["closeButton"].glowColor = glowColor;
|
||||
}
|
||||
}
|
||||
|
||||
#include "glowconfigdialog.moc"
|
|
@ -0,0 +1,85 @@
|
|||
/***************************************************************************
|
||||
glowconfigdialog.h - description
|
||||
-------------------
|
||||
begin : Thu Sep 12 2001
|
||||
copyright : (C) 2001 by Henning Burchardt
|
||||
email : h_burchardt@gmx.de
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef GLOW_CONFIG_DIALOG_H
|
||||
#define GLOW_CONFIG_DIALOG_H
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <qobject.h>
|
||||
|
||||
class QPushButton;
|
||||
class QSignalMapper;
|
||||
class QRadioButton;
|
||||
class KConfig;
|
||||
class KColorButton;
|
||||
|
||||
class GlowConfigDialog : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
struct ButtonConfig
|
||||
{
|
||||
// one of "TitleBar", "TitleBlend", "Custom"
|
||||
QString glowType;
|
||||
QColor glowColor;
|
||||
};
|
||||
|
||||
GlowConfigDialog( KConfig* conf, QWidget* parent );
|
||||
~GlowConfigDialog();
|
||||
|
||||
signals:
|
||||
void changed();
|
||||
|
||||
public slots:
|
||||
void load( KConfig* conf );
|
||||
void save( KConfig* conf );
|
||||
void defaults();
|
||||
|
||||
protected slots:
|
||||
void slotSelectionChanged(); // Internal use
|
||||
void slotTitleButtonClicked(int);
|
||||
void slotColorRadioButtonClicked(int);
|
||||
void slotColorButtonChanged(const QColor&);
|
||||
|
||||
private:
|
||||
KConfig *m_glowConfig;
|
||||
map<QString, ButtonConfig> m_buttonConfigMap;
|
||||
|
||||
QGroupBox *m_mainGroupBox;
|
||||
|
||||
QPushButton *m_stickyButton;
|
||||
QPushButton *m_helpButton;
|
||||
QPushButton *m_iconifyButton;
|
||||
QPushButton *m_maximizeButton;
|
||||
QPushButton *m_closeButton;
|
||||
vector<QPushButton*> m_titleButtonList;
|
||||
QSignalMapper *m_titleButtonMapper;
|
||||
|
||||
QRadioButton *m_titleBarColorButton;
|
||||
QRadioButton *m_titleBlendColorButton;
|
||||
QRadioButton *m_customColorButton;
|
||||
vector<QRadioButton*> m_colorRadioButtonList;
|
||||
QSignalMapper *m_colorRadioButtonMapper;
|
||||
KColorButton *m_colorButton;
|
||||
|
||||
void updateUI();
|
||||
void updateConfig();
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue