not quite so much needs to be delayed to the init() function
[personal-kdebase.git] / workspace / kwin / effects / videorecord_config.cpp
blobc9b53642639e6b4ad0feae028f5c8f69beef74cf
1 /********************************************************************
2 KWin - the KDE window manager
3 This file is part of the KDE project.
5 Copyright (C) 2007 Rivo Laks <rivolaks@hot.ee>
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *********************************************************************/
21 #include "videorecord_config.h"
23 #include <kwineffects.h>
25 #include <klocale.h>
26 #include <kdebug.h>
27 #include <KActionCollection>
28 #include <kaction.h>
29 #include <KShortcutsEditor>
30 #include <KUrlRequester>
31 #include <QLabel>
32 #include <KGlobalSettings>
33 #include <KConfigGroup>
35 #include <QVBoxLayout>
36 #include <QHBoxLayout>
37 #ifndef KDE_USE_FINAL
38 KWIN_EFFECT_CONFIG_FACTORY
39 #endif
40 K_PLUGIN_FACTORY_DEFINITION(EffectFactory,
41 registerPlugin<KWin::VideoRecordEffectConfig>("videorecord");
43 K_EXPORT_PLUGIN(EffectFactory("kwin"))
45 namespace KWin
48 VideoRecordEffectConfig::VideoRecordEffectConfig(QWidget* parent, const QVariantList& args) :
49 KCModule(EffectFactory::componentData(), parent, args)
51 QVBoxLayout* layout = new QVBoxLayout(this);
52 QHBoxLayout* hlayout = new QHBoxLayout( this );
53 QLabel *label = new QLabel( i18n( "Path to save video:" ), this );
54 hlayout->addWidget( label );
55 saveVideo = new KUrlRequester( this );
56 saveVideo->setMode( KFile::Directory | KFile::LocalOnly );
57 hlayout->addWidget( saveVideo );
58 layout->addLayout( hlayout );
60 KActionCollection* actionCollection = new KActionCollection( this, componentData() );
61 KAction* a = static_cast<KAction*>(actionCollection->addAction( "VideoRecord" ));
62 a->setText( i18n("Toggle Video Recording" ));
63 a->setProperty("isConfigurationAction", true);
64 a->setGlobalShortcut(KShortcut(Qt::CTRL + Qt::META + Qt::Key_V));
66 mShortcutEditor = new KShortcutsEditor(actionCollection, this,
67 KShortcutsEditor::GlobalAction, KShortcutsEditor::LetterShortcutsDisallowed);
68 layout->addWidget(mShortcutEditor);
70 connect(saveVideo, SIGNAL(textChanged(const QString&)), this, SLOT(changed()));
71 connect(mShortcutEditor, SIGNAL(keyChange()), this, SLOT(changed()));
73 layout->addStretch();
75 load();
78 VideoRecordEffectConfig::~VideoRecordEffectConfig()
80 // Undo (only) unsaved changes to global key shortcuts
81 mShortcutEditor->undoChanges();
84 void VideoRecordEffectConfig::load()
86 KCModule::load();
88 KConfigGroup conf = EffectsHandler::effectConfig("VideoRecord");
89 saveVideo->setPath( conf.readEntry( "videopath", KGlobalSettings::documentPath() ) );
90 emit changed(false);
93 void VideoRecordEffectConfig::save()
95 KCModule::save();
97 KConfigGroup conf = EffectsHandler::effectConfig("VideoRecord");
99 if( saveVideo->url().isEmpty() )
100 conf.writeEntry("videopath", KGlobalSettings::documentPath());
101 else
102 conf.writeEntry("videopath", saveVideo->url().path());
104 conf.sync();
106 mShortcutEditor->save(); // undo() will restore to this state from now on
108 emit changed(false);
109 EffectsHandler::sendReloadMessage( "videorecord" );
112 void VideoRecordEffectConfig::defaults()
114 saveVideo->setPath(KGlobalSettings::documentPath() );
115 mShortcutEditor->allDefault();
116 emit changed(true);
120 } // namespace
122 #include "videorecord_config.moc"