From bb6a65b424aef1b6c4c9bd5ea977ae4271a40f60 Mon Sep 17 00:00:00 2001 From: Rivo Laks Date: Tue, 25 Sep 2007 17:52:19 +0000 Subject: [PATCH] Add config module for DesktopGrid. You can configure slide animation and activations shortcut svn path=/trunk/KDE/kdebase/workspace/; revision=716951 --- effects/CMakeLists.txt | 7 ++- effects/configs_builtins.cpp | 7 ++- effects/desktopgrid_config.cpp | 97 ++++++++++++++++++++++++++++++ effects/desktopgrid_config.desktop | 10 +++ effects/desktopgrid_config.h | 41 +++++++++++++ 5 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 effects/desktopgrid_config.cpp create mode 100644 effects/desktopgrid_config.desktop create mode 100644 effects/desktopgrid_config.h diff --git a/effects/CMakeLists.txt b/effects/CMakeLists.txt index a3f1685f63..697422f8ce 100644 --- a/effects/CMakeLists.txt +++ b/effects/CMakeLists.txt @@ -99,10 +99,15 @@ if(OPENGL_FOUND) DESTINATION ${DATA_INSTALL_DIR}/kwin ) # config modules - KWIN4_ADD_EFFECT_CONFIG( builtins presentwindows_config.cpp shadow_config.cpp configs_builtins.cpp) + KWIN4_ADD_EFFECT_CONFIG( builtins + presentwindows_config.cpp + shadow_config.cpp + desktopgrid_config.cpp + configs_builtins.cpp) install( FILES presentwindows_config.desktop shadow_config.desktop + desktopgrid_config.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) diff --git a/effects/configs_builtins.cpp b/effects/configs_builtins.cpp index d77364e355..11ee79219e 100644 --- a/effects/configs_builtins.cpp +++ b/effects/configs_builtins.cpp @@ -10,6 +10,7 @@ License. See the file "COPYING" for the exact licensing terms. #include "shadow_config.h" #include "presentwindows_config.h" +#include "desktopgrid_config.h" #include @@ -17,6 +18,8 @@ License. See the file "COPYING" for the exact licensing terms. KWIN_EFFECT_CONFIG_FACTORY K_PLUGIN_FACTORY_DEFINITION(EffectFactory, registerPlugin("shadow"); - registerPlugin("presentwindows");) -K_EXPORT_PLUGIN(EffectFactory("kcm_kwineffect")) + registerPlugin("presentwindows"); + registerPlugin("desktopgrid"); + ) +K_EXPORT_PLUGIN(EffectFactory("kwin")) diff --git a/effects/desktopgrid_config.cpp b/effects/desktopgrid_config.cpp new file mode 100644 index 0000000000..38d0332144 --- /dev/null +++ b/effects/desktopgrid_config.cpp @@ -0,0 +1,97 @@ +/***************************************************************** + 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 "desktopgrid_config.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +KWIN_EFFECT_CONFIG_FACTORY + +namespace KWin +{ + +DesktopGridEffectConfig::DesktopGridEffectConfig(QWidget* parent, const QVariantList& args) : + KCModule(EffectFactory::componentData(), parent, args) + { + kDebug() ; + + QVBoxLayout* layout = new QVBoxLayout(this); + + mSlide = new QCheckBox(i18n("Animate desktop changes"), this); + connect(mSlide, SIGNAL(toggled(bool)), this, SLOT(changed())); + layout->addWidget(mSlide); + + KGlobalAccel::self()->overrideMainComponentData(componentData()); + KActionCollection* actionCollection = new KActionCollection( this, KComponentData("kwin") ); + KAction* show = static_cast(actionCollection->addAction( "ShowDesktopGrid" )); + show->setText( i18n("Show Desktop Grid" )); + show->setGlobalShortcut( KShortcut( Qt::CTRL + Qt::Key_F8 )); + + KShortcutsEditor* shortcutEditor = new KShortcutsEditor(actionCollection, this, + KShortcutsEditor::GlobalAction, KShortcutsEditor::LetterShortcutsDisallowed); + connect(shortcutEditor, SIGNAL(keyChange()), this, SLOT(changed())); + layout->addWidget(shortcutEditor); + + layout->addStretch(); + + load(); + } + +DesktopGridEffectConfig::~DesktopGridEffectConfig() + { + kDebug() ; + } + +void DesktopGridEffectConfig::load() + { + kDebug() ; + KCModule::load(); + + KConfigGroup conf = EffectsHandler::effectConfig("DesktopGrid"); + mSlide->setChecked(conf.readEntry("Slide", true)); + + emit changed(false); + } + +void DesktopGridEffectConfig::save() + { + kDebug() ; + KCModule::save(); + + KConfigGroup conf = EffectsHandler::effectConfig("DesktopGrid"); + conf.writeEntry("Slide", mSlide->isChecked()); + + conf.sync(); + + emit changed(false); + EffectsHandler::sendReloadMessage( "desktopgrid" ); + } + +void DesktopGridEffectConfig::defaults() + { + kDebug() ; + mSlide->setChecked(true); + emit changed(true); + } + + +} // namespace + +#include "desktopgrid_config.moc" diff --git a/effects/desktopgrid_config.desktop b/effects/desktopgrid_config.desktop new file mode 100644 index 0000000000..d213fd0b43 --- /dev/null +++ b/effects/desktopgrid_config.desktop @@ -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_desktopgrid +X-KDE-PluginKeyword=desktopgrid + +Name=Desktop Grid diff --git a/effects/desktopgrid_config.h b/effects/desktopgrid_config.h new file mode 100644 index 0000000000..f515490509 --- /dev/null +++ b/effects/desktopgrid_config.h @@ -0,0 +1,41 @@ +/***************************************************************** + 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 KWIN_DESKTOPGRID_CONFIG_H +#define KWIN_DESKTOPGRID_CONFIG_H + +#define KDE3_SUPPORT +#include +#undef KDE3_SUPPORT + +class QCheckBox; + +namespace KWin +{ + +class DesktopGridEffectConfig : public KCModule + { + Q_OBJECT + public: + explicit DesktopGridEffectConfig(QWidget* parent = 0, const QVariantList& args = QVariantList()); + ~DesktopGridEffectConfig(); + + public slots: + virtual void save(); + virtual void load(); + virtual void defaults(); + + private: + QCheckBox* mSlide; + }; + +} // namespace + +#endif