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>
27 #include <KActionCollection>
29 #include <KShortcutsEditor>
30 #include <KUrlRequester>
32 #include <KGlobalSettings>
33 #include <KConfigGroup>
35 #include <QVBoxLayout>
36 #include <QHBoxLayout>
38 KWIN_EFFECT_CONFIG_FACTORY
40 K_PLUGIN_FACTORY_DEFINITION(EffectFactory
,
41 registerPlugin
<KWin::VideoRecordEffectConfig
>("videorecord");
43 K_EXPORT_PLUGIN(EffectFactory("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()));
78 VideoRecordEffectConfig::~VideoRecordEffectConfig()
80 // Undo (only) unsaved changes to global key shortcuts
81 mShortcutEditor
->undoChanges();
84 void VideoRecordEffectConfig::load()
88 KConfigGroup conf
= EffectsHandler::effectConfig("VideoRecord");
89 saveVideo
->setPath( conf
.readEntry( "videopath", KGlobalSettings::documentPath() ) );
93 void VideoRecordEffectConfig::save()
97 KConfigGroup conf
= EffectsHandler::effectConfig("VideoRecord");
99 if( saveVideo
->url().isEmpty() )
100 conf
.writeEntry("videopath", KGlobalSettings::documentPath());
102 conf
.writeEntry("videopath", saveVideo
->url().path());
106 mShortcutEditor
->save(); // undo() will restore to this state from now on
109 EffectsHandler::sendReloadMessage( "videorecord" );
112 void VideoRecordEffectConfig::defaults()
114 saveVideo
->setPath(KGlobalSettings::documentPath() );
115 mShortcutEditor
->allDefault();
122 #include "videorecord_config.moc"