diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp index f812947894..45e6cc725e 100644 --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -17,6 +17,10 @@ License. See the file "COPYING" for the exact licensing terms. #include #include #include +#include +#include +#include +#include #include #include @@ -36,15 +40,22 @@ KWinCompositingConfig::KWinCompositingConfig(QWidget *parent, const QVariantList mKWinConfig(KSharedConfig::openConfig("kwinrc")) { ui.setupUi(this); + ui.tabWidget->setCurrentIndex(0); connect(ui.advancedOptions, SIGNAL(clicked()), this, SLOT(showAdvancedOptions())); - connect(ui.useCompositing, SIGNAL(toggled(bool)), ui.compositingOptionsContainer, SLOT(setEnabled(bool))); + connect(ui.useCompositing, SIGNAL(toggled(bool)), this, SLOT(compositingEnabled(bool))); connect(ui.useCompositing, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(ui.effectWinManagement, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(ui.effectShadows, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(ui.effectAnimations, SIGNAL(toggled(bool)), this, SLOT(changed())); + connect(ui.effectSelector, SIGNAL(changed(bool)), this, SLOT(changed())); + connect(ui.effectSelector, SIGNAL(configCommitted(const QByteArray&)), + this, SLOT(reparseConfiguration(const QByteArray&))); + + initEffectSelector(); + // Load config load(); @@ -61,7 +72,13 @@ KWinCompositingConfig::~KWinCompositingConfig() void KWinCompositingConfig::reparseConfiguration(const QByteArray&conf) { - KSettings::Dispatcher::reparseConfiguration(conf); + KSettings::Dispatcher::reparseConfiguration(conf); +} + +void KWinCompositingConfig::compositingEnabled(bool enabled) +{ + ui.compositingOptionsContainer->setEnabled(enabled); + ui.tabWidget->setTabEnabled(1, enabled); } void KWinCompositingConfig::showAdvancedOptions() @@ -72,6 +89,21 @@ void KWinCompositingConfig::showAdvancedOptions() connect(dialog, SIGNAL(configSaved()), this, SLOT(configChanged())); } +void KWinCompositingConfig::initEffectSelector() +{ + // Find all .desktop files of the effects + KService::List offers = KServiceTypeTrader::self()->query("KWin/Effect"); + QList effectinfos = KPluginInfo::fromServices(offers); + + // Add them to the plugin selector + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Appearance"), "Appearance", mKWinConfig); + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Accessibility"), "Accessibility", mKWinConfig); + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Window Management"), "Window Management", mKWinConfig); + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Demos"), "Demos", mKWinConfig); + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Tests"), "Tests", mKWinConfig); + ui.effectSelector->addPlugins(effectinfos, KPluginSelector::ReadConfigFile, i18n("Misc"), "Misc", mKWinConfig); +} + void KWinCompositingConfig::load() { kDebug() ; @@ -91,6 +123,8 @@ void KWinCompositingConfig::load() ui.effectShadows->setChecked(LOAD_EFFECT_CONFIG("shadow")); ui.effectAnimations->setChecked(LOAD_EFFECT_CONFIG("minimizeanimation")); + ui.effectSelector->load(); + emit changed( false ); } @@ -115,6 +149,8 @@ void KWinCompositingConfig::save() WRITE_EFFECT_CONFIG("minimizeanimation", ui.effectAnimations); #undef WRITE_EFFECT_CONFIG + ui.effectSelector->save(); + emit changed( false ); configChanged(); @@ -137,6 +173,8 @@ void KWinCompositingConfig::defaults() ui.effectWinManagement->setChecked(true); ui.effectShadows->setChecked(true); ui.effectAnimations->setChecked(true); + + ui.effectSelector->defaults(); } QString KWinCompositingConfig::quickHelp() const diff --git a/kcmkwin/kwincompositing/main.h b/kcmkwin/kwincompositing/main.h index 20aa4c8fe4..c046af2535 100644 --- a/kcmkwin/kwincompositing/main.h +++ b/kcmkwin/kwincompositing/main.h @@ -33,6 +33,7 @@ class KWinCompositingConfig : public KCModule virtual QString quickHelp() const; public slots: + virtual void compositingEnabled(bool enabled); virtual void showAdvancedOptions(); virtual void load(); @@ -41,6 +42,9 @@ class KWinCompositingConfig : public KCModule void reparseConfiguration(const QByteArray&conf); void configChanged(); + void initEffectSelector(); + + protected: private: KSharedConfigPtr mKWinConfig; diff --git a/kcmkwin/kwincompositing/main.ui b/kcmkwin/kwincompositing/main.ui index 6b2b40a1ae..7a32f25c6b 100644 --- a/kcmkwin/kwincompositing/main.ui +++ b/kcmkwin/kwincompositing/main.ui @@ -5,112 +5,158 @@ 0 0 - 515 - 334 + 607 + 661 - - - Enable desktop effects - - - true + + + 1 + + + General + + + + + + Enable desktop effects + + + true + + + + + + + + + + Common effects + + + + + + Improved window management + + + true + + + + + + + Shadows + + + true + + + + + + + Various animations + + + true + + + + + + + You can find more effects in the All effects tab + + + + + + + + + + + + Qt::Horizontal + + + + 101 + 20 + + + + + + + + Advanced options... + + + + + + + + + + + + Qt::Vertical + + + + 20 + 21 + + + + + + + + + All effects + + + + + + Hint: to find out or configure how to activate an effect, look at effect's options + + + + + + + + 0 + 0 + + + + + + - - - - - - - Common effects - - - - - - Improved window management - - - true - - - - - - - Shadows - - - true - - - - - - - Various animations - - - true - - - - - - - You can find more effects in the Effects config module - - - - - - - - - - - - Qt::Horizontal - - - - 101 - 20 - - - - - - - - Advanced options... - - - - - - - - - - - - Qt::Vertical - - - - 20 - 21 - - - - + + + KPluginSelector + QWidget +
kpluginselector.h
+ 1 +
+