- Add config module for MakeTransparent effect.

Defaults are 70% translucency for window decorations and 80% for moving windows.
- Set it's user-visible name to Translucency

svn path=/trunk/KDE/kdebase/workspace/; revision=728122
This commit is contained in:
Rivo Laks 2007-10-22 13:34:26 +00:00
parent d1db24abd6
commit bbb6d2d96a
7 changed files with 167 additions and 5 deletions

View file

@ -58,11 +58,13 @@ KWIN4_ADD_EFFECT_CONFIG( builtins
presentwindows_config.cpp
shadow_config.cpp
desktopgrid_config.cpp
maketransparent_config.cpp
configs_builtins.cpp)
install( FILES
presentwindows_config.desktop
shadow_config.desktop
desktopgrid_config.desktop
maketransparent_config.desktop
DESTINATION ${SERVICES_INSTALL_DIR}/kwin )
if(OPENGL_FOUND)

View file

@ -11,6 +11,7 @@ License. See the file "COPYING" for the exact licensing terms.
#include "shadow_config.h"
#include "presentwindows_config.h"
#include "desktopgrid_config.h"
#include "maketransparent_config.h"
#include <kwineffects.h>
@ -21,6 +22,7 @@ KWIN_EFFECT_CONFIG_FACTORY
K_PLUGIN_FACTORY_DEFINITION(EffectFactory, registerPlugin<KWin::ShadowEffectConfig>("shadow");
registerPlugin<KWin::PresentWindowsEffectConfig>("presentwindows");
registerPlugin<KWin::DesktopGridEffectConfig>("desktopgrid");
registerPlugin<KWin::MakeTransparentEffectConfig>("maketransparent");
)
K_EXPORT_PLUGIN(EffectFactory("kwin"))

View file

@ -10,6 +10,8 @@ License. See the file "COPYING" for the exact licensing terms.
#include "maketransparent.h"
#include <kconfiggroup.h>
namespace KWin
{
@ -17,10 +19,10 @@ KWIN_EFFECT( maketransparent, MakeTransparentEffect )
MakeTransparentEffect::MakeTransparentEffect()
{
// TODO options
decoration = 0.7;
moveresize = 0.5;
dialogs = 1.0;
KConfigGroup conf = effects->effectConfig("MakeTransparent");
decoration = conf.readEntry( "Decoration", 0.7 );
moveresize = conf.readEntry( "MoveResize", 0.8 );
dialogs = conf.readEntry( "Dialogs", 1.0 );
}
void MakeTransparentEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time )

View file

@ -1,6 +1,6 @@
[Desktop Entry]
Encoding=UTF-8
Name=Make Transparent
Name=Translucency
Name[be]=Зрабіць празрыстым
Name[bg]=Прозрачност
Name[csb]=Robi transparentné

View file

@ -0,0 +1,105 @@
/*****************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 2007 Rivo Laks <rivolaks@hot.ee>
You can Freely distribute this program under the GNU General Public
License. See the file "COPYING" for the exact licensing terms.
******************************************************************/
#include "maketransparent_config.h"
#include <kwineffects.h>
#include <klocale.h>
#include <kdebug.h>
#include <kconfiggroup.h>
#include <QGridLayout>
#include <QLabel>
#include <QSpinBox>
#ifndef KDE_USE_FINAL
KWIN_EFFECT_CONFIG_FACTORY
#endif
namespace KWin
{
MakeTransparentEffectConfig::MakeTransparentEffectConfig(QWidget* parent, const QVariantList& args) :
KCModule(EffectFactory::componentData(), parent, args)
{
kDebug() ;
QGridLayout* layout = new QGridLayout(this);
layout->addWidget(new QLabel(i18n("Changes opacity of following elements:"), this), 0, 0, 1, 2);
layout->addWidget(new QLabel(i18n("Decorations:"), this), 1, 0);
mDecoration = new QSpinBox(this);
mDecoration->setRange(0, 100);
mDecoration->setSuffix("%");
connect(mDecoration, SIGNAL(valueChanged(int)), this, SLOT(changed()));
layout->addWidget(mDecoration, 1, 1);
layout->addWidget(new QLabel(i18n("Moved/resized windows:"), this), 2, 0);
mMoveResize = new QSpinBox(this);
mMoveResize->setRange(0, 100);
mMoveResize->setSuffix("%");
connect(mMoveResize, SIGNAL(valueChanged(int)), this, SLOT(changed()));
layout->addWidget(mMoveResize, 2, 1);
layout->addWidget(new QLabel(i18n("Dialogs:"), this), 3, 0);
mDialogs = new QSpinBox(this);
mDialogs->setRange(0, 100);
mDialogs->setSuffix("%");
connect(mDialogs, SIGNAL(valueChanged(int)), this, SLOT(changed()));
layout->addWidget(mDialogs, 3, 1);
layout->addItem(new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding), 4, 0, 1, 2);
load();
}
void MakeTransparentEffectConfig::load()
{
kDebug() ;
KCModule::load();
KConfigGroup conf = EffectsHandler::effectConfig("MakeTransparent");
mDecoration->setValue( (int)( conf.readEntry( "Decoration", 0.7 ) * 100 ) );
mMoveResize->setValue( (int)( conf.readEntry( "MoveResize", 0.8 ) * 100 ) );
mDialogs->setValue( (int)( conf.readEntry( "Dialogs", 1.0 ) * 100 ) );
emit changed(false);
}
void MakeTransparentEffectConfig::save()
{
kDebug() ;
KCModule::save();
KConfigGroup conf = EffectsHandler::effectConfig("MakeTransparent");
conf.writeEntry( "Decoration", mDecoration->value() / 100.0 );
conf.writeEntry( "MoveResize", mMoveResize->value() / 100.0 );
conf.writeEntry( "Dialogs", mDialogs->value() / 100.0 );
conf.sync();
emit changed(false);
EffectsHandler::sendReloadMessage( "translucentdecorations" );
}
void MakeTransparentEffectConfig::defaults()
{
kDebug() ;
mDecoration->setValue( 70 );
mMoveResize->setValue( 80 );
mDialogs->setValue( 100 );
emit changed(true);
}
} // namespace
#include "maketransparent_config.moc"

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Type=Service
ServiceTypes=KCModule
X-KDE-Library=kcm_kwin4_effect_builtins
X-KDE-ParentComponents=kwin4_effect_maketransparent
X-KDE-PluginKeyword=maketransparent
Name=Translucency

View file

@ -0,0 +1,41 @@
/*****************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
Copyright (C) 2007 Rivo Laks <rivolaks@hot.ee>
You can Freely distribute this program under the GNU General Public
License. See the file "COPYING" for the exact licensing terms.
******************************************************************/
#ifndef KWIN_MAKETRANSPARENT_CONFIG_H
#define KWIN_MAKETRANSPARENT_CONFIG_H
#define KDE3_SUPPORT
#include <kcmodule.h>
#undef KDE3_SUPPORT
class QSpinBox;
namespace KWin
{
class MakeTransparentEffectConfig : public KCModule
{
Q_OBJECT
public:
explicit MakeTransparentEffectConfig(QWidget* parent = 0, const QVariantList& args = QVariantList());
virtual void save();
virtual void load();
virtual void defaults();
private:
QSpinBox* mDecoration;
QSpinBox* mMoveResize;
QSpinBox* mDialogs;
};
} // namespace
#endif