Add KControl config module for effects.

ATM you can toggle them on/off, but KWin part isn't done yet, so KWin doesn't care about your changes yet.
You can try it with 'kcmshell kwineffects'

svn path=/trunk/KDE/kdebase/workspace/; revision=668251
icc-effect-5.14.5
Rivo Laks 2007-05-25 17:11:00 +00:00
parent 19520d39b5
commit 63b58f6147
6 changed files with 204 additions and 0 deletions

View File

@ -2,4 +2,5 @@
add_subdirectory( kwinoptions )
add_subdirectory( kwindecoration )
add_subdirectory( kwinrules )
add_subdirectory( kwineffects )

View File

@ -0,0 +1,17 @@
include_directories( ${CMAKE_SOURCE_DIR}/workspace/kwin/lib )
########### next target ###############
set(kcm_kwineffects_PART_SRCS main.cpp )
kde4_automoc(${kcm_kwineffects_PART_SRCS})
kde4_add_plugin(kcm_kwineffects ${kcm_kwineffects_PART_SRCS})
target_link_libraries(kcm_kwineffects ${KDE4_KDEUI_LIBS} ${KDE4_KUTILS_LIBS})
install(TARGETS kcm_kwineffects DESTINATION ${PLUGIN_INSTALL_DIR} )
########### install files ###############
install( FILES kwineffects.desktop DESTINATION ${SERVICES_INSTALL_DIR} )

View File

@ -0,0 +1,2 @@
#! /usr/bin/env bash
$XGETTEXT *.cpp -o $podir/kcmkwineffects.pot

View File

@ -0,0 +1,17 @@
[Desktop Entry]
Encoding=UTF-8
Exec=kcmshell kwineffects
Icon=kcmeffects
Type=Service
ServiceTypes=KCModule
DocPath=kcontrol/kwineffects/index.html
X-KDE-Library=kcm_kwineffects
X-KDE-FactoryName=kcm_kwineffects
X-KDE-ParentApp=kcontrol
Name=Window Effects
Comment=Configure window effects
Keywords=kwin,window,manager,effect

View File

@ -0,0 +1,114 @@
/*****************************************************************
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 "main.h"
#include <kgenericfactory.h>
#include <kaboutdata.h>
#include <kstandarddirs.h>
#include <kconfig.h>
#include <kdebug.h>
#include <kpluginselector.h>
#include <kservicetypetrader.h>
#include <kplugininfo.h>
#include <QtDBus/QtDBus>
#include <QBoxLayout>
#include <QStringList>
typedef KGenericFactory<KWin::KWinEffectsConfig> KWinEffectsConfigFactory;
K_EXPORT_COMPONENT_FACTORY( kcm_kwineffects, KWinEffectsConfigFactory("kcmkwineffects"))
namespace KWin
{
KWinEffectsConfig::KWinEffectsConfig(QWidget *parent, const QStringList &)
: KCModule( KWinEffectsConfigFactory::componentData(), parent),
mKWinConfig(KSharedConfig::openConfig("kwinrc"))
{
mPluginSelector = new KPluginSelector(this);
QHBoxLayout* layout = new QHBoxLayout;
layout->addWidget(mPluginSelector);
setLayout(layout);
connect(mPluginSelector, SIGNAL(changed(bool)), this, SLOT(changed()));
// Find all .desktop files of the effects
QStringList desktopFiles = KGlobal::dirs()->findAllResources("data", "kwin/effects/*.desktop");
QList<KPluginInfo*> effectinfos = KPluginInfo::fromFiles(desktopFiles);
// Add them to the plugin selector
mPluginSelector->addPlugins(effectinfos, i18n("Appearance"), "Appearance", mKWinConfig);
mPluginSelector->addPlugins(effectinfos, i18n("Window Management"), "Window Management", mKWinConfig);
mPluginSelector->addPlugins(effectinfos, i18n("Demos"), "Demos", mKWinConfig);
mPluginSelector->addPlugins(effectinfos, i18n("Tests"), "Tests", mKWinConfig);
mPluginSelector->addPlugins(effectinfos, i18n("Misc"), "Misc", mKWinConfig);
// Load config
load();
KAboutData *about = new KAboutData(I18N_NOOP("kcmkwineffects"),
I18N_NOOP("Window Effects Configuration Module"),
0, 0, KAboutData::License_GPL, I18N_NOOP("(c) 2007 Rivo Laks"));
about->addAuthor("Rivo Laks", 0, "rivolaks@hot.ee");
setAboutData(about);
}
KWinEffectsConfig::~KWinEffectsConfig()
{
}
void KWinEffectsConfig::load()
{
kDebug() << k_funcinfo << endl;
mKWinConfig->reparseConfiguration();
mPluginSelector->load();
emit changed( false );
}
void KWinEffectsConfig::save()
{
kDebug() << k_funcinfo << endl;
mPluginSelector->save();
emit changed( false );
// Send signal to kwin
mKWinConfig->sync();
// Send signal to all kwin instances
QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
QDBusConnection::sessionBus().send(message);
}
void KWinEffectsConfig::defaults()
{
kDebug() << k_funcinfo << endl;
mPluginSelector->defaults();
}
QString KWinEffectsConfig::quickHelp() const
{
kDebug() << k_funcinfo << endl;
return i18n("<h1>Window Effects</h1> Here you can configure which effects will be used.");
}
} // namespace
#include "main.moc"

View File

@ -0,0 +1,53 @@
/*****************************************************************
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 __MAIN_H__
#define __MAIN_H__
#include <kcmodule.h>
#include <ksharedconfig.h>
#include <QStringList>
#include <QHash>
#include <QSet>
class KListWidget;
class QListWidgetItem;
class KPluginSelector;
class QLabel;
class QCheckBox;
namespace KWin
{
class KWinEffectsConfig : public KCModule
{
Q_OBJECT
public:
KWinEffectsConfig(QWidget *parent, const QStringList &args);
virtual ~KWinEffectsConfig();
virtual QString quickHelp() const;
public slots:
virtual void load();
virtual void save();
virtual void defaults();
private:
KSharedConfigPtr mKWinConfig;
KPluginSelector* mPluginSelector;
};
} // namespace
#endif