From 24a0e94397b398616ac6728079152e6f44b1b78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Thu, 11 Nov 2010 19:40:13 +0000 Subject: [PATCH] Config interface for resize effect Better late than never... svn path=/trunk/KDE/kdebase/workspace/; revision=1195693 --- effects/configs_builtins.cpp | 2 + effects/resize/CMakeLists.txt | 11 ++++ effects/resize/resize_config.cpp | 84 ++++++++++++++++++++++++++++ effects/resize/resize_config.desktop | 9 +++ effects/resize/resize_config.h | 56 +++++++++++++++++++ effects/resize/resize_config.ui | 48 ++++++++++++++++ 6 files changed, 210 insertions(+) create mode 100644 effects/resize/resize_config.cpp create mode 100644 effects/resize/resize_config.desktop create mode 100644 effects/resize/resize_config.h create mode 100644 effects/resize/resize_config.ui diff --git a/effects/configs_builtins.cpp b/effects/configs_builtins.cpp index 7580d52034..ca3b17f948 100644 --- a/effects/configs_builtins.cpp +++ b/effects/configs_builtins.cpp @@ -29,6 +29,7 @@ along with this program. If not, see . #include "magiclamp/magiclamp_config.h" #include "translucency/translucency_config.h" #include "presentwindows/presentwindows_config.h" +#include "resize/resize_config.h" #include "shadow/shadow_config.h" #include "showfps/showfps_config.h" #include "thumbnailaside/thumbnailaside_config.h" @@ -66,6 +67,7 @@ KWIN_EFFECT_CONFIG_MULTIPLE( builtins, KWIN_EFFECT_CONFIG_SINGLE( magiclamp, MagicLampEffectConfig ) KWIN_EFFECT_CONFIG_SINGLE( translucency, TranslucencyEffectConfig ) KWIN_EFFECT_CONFIG_SINGLE( presentwindows, PresentWindowsEffectConfig ) + KWIN_EFFECT_CONFIG_SINGLE( resize, ResizeEffectConfig ) KWIN_EFFECT_CONFIG_SINGLE( shadow, ShadowEffectConfig ) KWIN_EFFECT_CONFIG_SINGLE( showfps, ShowFpsEffectConfig ) KWIN_EFFECT_CONFIG_SINGLE( thumbnailaside, ThumbnailAsideEffectConfig ) diff --git a/effects/resize/CMakeLists.txt b/effects/resize/CMakeLists.txt index f59fce3bac..33c0f547ea 100644 --- a/effects/resize/CMakeLists.txt +++ b/effects/resize/CMakeLists.txt @@ -13,3 +13,14 @@ install( FILES ####################################### # Config + +# Source files +set( kwin4_effect_builtins_config_sources ${kwin4_effect_builtins_config_sources} + resize/resize_config.cpp + resize/resize_config.ui + ) + +# .desktop files +install( FILES + resize/resize_config.desktop + DESTINATION ${SERVICES_INSTALL_DIR}/kwin ) diff --git a/effects/resize/resize_config.cpp b/effects/resize/resize_config.cpp new file mode 100644 index 0000000000..748e78875c --- /dev/null +++ b/effects/resize/resize_config.cpp @@ -0,0 +1,84 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + + Copyright (C) 2010 Martin Gräßlin + +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. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +#include "resize_config.h" +#include + +#include + +#include + +namespace KWin +{ + +KWIN_EFFECT_CONFIG_FACTORY + +ResizeEffectConfigForm::ResizeEffectConfigForm(QWidget* parent) : QWidget(parent) + { + setupUi( this ); + } + +ResizeEffectConfig::ResizeEffectConfig(QWidget* parent, const QVariantList& args) : + KCModule(EffectFactory::componentData(), parent, args) + { + m_ui = new ResizeEffectConfigForm( this ); + + QVBoxLayout* layout = new QVBoxLayout( this ); + + layout->addWidget(m_ui); + + connect(m_ui->scaleBox, SIGNAL(stateChanged(int)), this, SLOT(changed())); + connect(m_ui->outlineBox, SIGNAL(stateChanged(int)), this, SLOT(changed())); + + load(); + } + +void ResizeEffectConfig::load() + { + KCModule::load(); + + KConfigGroup conf = EffectsHandler::effectConfig( "Resize" ); + m_ui->scaleBox->setChecked(conf.readEntry( "TextureScale", true )); + m_ui->outlineBox->setChecked(conf.readEntry( "Outline" , false )); + + emit changed( false ); + } + +void ResizeEffectConfig::save() + { + KConfigGroup conf = EffectsHandler::effectConfig( "Resize" ); + conf.writeEntry( "TextureScale", m_ui->scaleBox->isChecked() ); + conf.writeEntry( "Outline", m_ui->outlineBox->isChecked() ); + + conf.sync(); + + emit changed( false ); + EffectsHandler::sendReloadMessage( "resize" ); + } + +void ResizeEffectConfig::defaults() + { + m_ui->scaleBox->setChecked( true ); + m_ui->outlineBox->setChecked( false ); + emit changed( true ); + } + +} // namespace + +#include "resize_config.moc" diff --git a/effects/resize/resize_config.desktop b/effects/resize/resize_config.desktop new file mode 100644 index 0000000000..697c47d559 --- /dev/null +++ b/effects/resize/resize_config.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Service +X-KDE-ServiceTypes=KCModule + +X-KDE-Library=kcm_kwin4_effect_builtins +X-KDE-ParentComponents=kwin4_effect_resize +X-KDE-PluginKeyword=resize + +Name=Resize Window diff --git a/effects/resize/resize_config.h b/effects/resize/resize_config.h new file mode 100644 index 0000000000..a5710f4676 --- /dev/null +++ b/effects/resize/resize_config.h @@ -0,0 +1,56 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + + Copyright (C) 2010 Martin Gräßlin + +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. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ + +#ifndef KWIN_RESIZE_CONFIG_H +#define KWIN_RESIZE_CONFIG_H + +#include + +#include "ui_resize_config.h" + + +namespace KWin +{ + +class ResizeEffectConfigForm : public QWidget, public Ui::ResizeEffectConfigForm +{ + Q_OBJECT + public: + explicit ResizeEffectConfigForm(QWidget* parent = 0); +}; + +class ResizeEffectConfig : public KCModule + { + Q_OBJECT + public: + explicit ResizeEffectConfig(QWidget* parent = 0, const QVariantList& args = QVariantList()); + + public slots: + virtual void save(); + virtual void load(); + virtual void defaults(); + + private: + ResizeEffectConfigForm* m_ui; + }; + +} // namespace + +#endif diff --git a/effects/resize/resize_config.ui b/effects/resize/resize_config.ui new file mode 100644 index 0000000000..651a7a1529 --- /dev/null +++ b/effects/resize/resize_config.ui @@ -0,0 +1,48 @@ + + + KWin::ResizeEffectConfigForm + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + Scale window + + + + + + + Show outline + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + +