diff --git a/kcmkwin/CMakeLists.txt b/kcmkwin/CMakeLists.txt index c69ff163f1..ffc3423eb2 100644 --- a/kcmkwin/CMakeLists.txt +++ b/kcmkwin/CMakeLists.txt @@ -2,4 +2,5 @@ add_subdirectory( kwinoptions ) add_subdirectory( kwindecoration ) add_subdirectory( kwinrules ) +add_subdirectory( kwineffects ) diff --git a/kcmkwin/kwineffects/CMakeLists.txt b/kcmkwin/kwineffects/CMakeLists.txt new file mode 100644 index 0000000000..d2d7335ff2 --- /dev/null +++ b/kcmkwin/kwineffects/CMakeLists.txt @@ -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} ) + + diff --git a/kcmkwin/kwineffects/Messages.sh b/kcmkwin/kwineffects/Messages.sh new file mode 100644 index 0000000000..b1e11178e8 --- /dev/null +++ b/kcmkwin/kwineffects/Messages.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +$XGETTEXT *.cpp -o $podir/kcmkwineffects.pot diff --git a/kcmkwin/kwineffects/kwineffects.desktop b/kcmkwin/kwineffects/kwineffects.desktop new file mode 100644 index 0000000000..7b9edfc671 --- /dev/null +++ b/kcmkwin/kwineffects/kwineffects.desktop @@ -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 diff --git a/kcmkwin/kwineffects/main.cpp b/kcmkwin/kwineffects/main.cpp new file mode 100644 index 0000000000..de43917e9a --- /dev/null +++ b/kcmkwin/kwineffects/main.cpp @@ -0,0 +1,114 @@ +/***************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2007 Rivo Laks + +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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + + + +typedef KGenericFactory 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 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("

Window Effects

Here you can configure which effects will be used."); +} + +} // namespace + +#include "main.moc" diff --git a/kcmkwin/kwineffects/main.h b/kcmkwin/kwineffects/main.h new file mode 100644 index 0000000000..456a09f675 --- /dev/null +++ b/kcmkwin/kwineffects/main.h @@ -0,0 +1,53 @@ +/***************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2007 Rivo Laks + +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 + +#include +#include +#include +#include + +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