From 4aed2c8219774f5d797760606b8489a92ddc5163 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- konqueror/konq_extensionmanager.cc | 147 +++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 konqueror/konq_extensionmanager.cc (limited to 'konqueror/konq_extensionmanager.cc') diff --git a/konqueror/konq_extensionmanager.cc b/konqueror/konq_extensionmanager.cc new file mode 100644 index 000000000..a43d4540d --- /dev/null +++ b/konqueror/konq_extensionmanager.cc @@ -0,0 +1,147 @@ +/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset:4 -*- + konq_extensionmanager.cc - Extension Manager for Konqueror + + Copyright (c) 2003 by Martijn Klingens + Copyright (c) 2004 by Arend van Beelen jr. + + ************************************************************************* + * * + * 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. * + * * + ************************************************************************* +*/ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "konq_extensionmanager.h" +#include "konq_mainwindow.h" + +class KonqExtensionManagerPrivate +{ +public: + KPluginSelector *pluginSelector; + KonqMainWindow *mainWindow; + KParts::ReadOnlyPart* activePart; + bool isChanged; +}; + +KonqExtensionManager::KonqExtensionManager(QWidget *parent, KonqMainWindow *mainWindow, KParts::ReadOnlyPart* activePart) : + KDialogBase(Plain, i18n("Configure"), Default | Cancel | Apply | Ok | User1, + Ok, parent, "extensionmanager", false, true, KGuiItem(i18n("&Reset"), "undo")) +{ + d = new KonqExtensionManagerPrivate; + showButton(User1, false); + setChanged(false); + + setInitialSize(QSize(640, 480)); + + (new QVBoxLayout(plainPage(), 0, 0))->setAutoAdd(true); + d->pluginSelector = new KPluginSelector(plainPage()); + setMainWidget(d->pluginSelector); + connect(d->pluginSelector, SIGNAL(changed(bool)), this, SLOT(setChanged(bool))); + connect(d->pluginSelector, SIGNAL(configCommitted(const QCString &)), + KSettings::Dispatcher::self(), SLOT(reparseConfiguration(const QCString &))); + + d->mainWindow = mainWindow; + d->activePart = activePart; + + // There's a limitation of KPluginSelector here... It assumes that all plugins in a given widget (as created by addPlugins) + // have their config in the same KConfig[Group]. So we can't show konqueror extensions and khtml extensions in the same tab. + d->pluginSelector->addPlugins("konqueror", i18n("Extensions"), "Extensions", KGlobal::config()); + if ( activePart ) { + KInstance* instance = activePart->instance(); + d->pluginSelector->addPlugins(instance->instanceName(), i18n("Tools"), "Tools", instance->config()); + d->pluginSelector->addPlugins(instance->instanceName(), i18n("Statusbar"), "Statusbar", instance->config()); + } +} + +KonqExtensionManager::~KonqExtensionManager() +{ + delete d; +} + +void KonqExtensionManager::setChanged(bool c) +{ + d->isChanged = c; + enableButton(Apply, c); +} + +void KonqExtensionManager::slotDefault() +{ + d->pluginSelector->defaults(); + setChanged(false); +} + +void KonqExtensionManager::slotUser1() +{ + d->pluginSelector->load(); + setChanged(false); +} + +void KonqExtensionManager::apply() +{ + if(d->isChanged) + { + d->pluginSelector->save(); + setChanged(false); + if( d->mainWindow ) + { + KParts::Plugin::loadPlugins(d->mainWindow, d->mainWindow, KGlobal::instance()); + QPtrList plugins = KParts::Plugin::pluginObjects(d->mainWindow); + QPtrListIterator it(plugins); + KParts::Plugin *plugin; + while((plugin = it.current()) != 0) + { + ++it; + d->mainWindow->factory()->addClient(plugin); + } + } + if ( d->activePart ) + { + KParts::Plugin::loadPlugins( d->activePart, d->activePart, d->activePart->instance() ); + QPtrList plugins = KParts::Plugin::pluginObjects( d->activePart ); + QPtrListIterator it(plugins); + KParts::Plugin *plugin; + while((plugin = it.current()) != 0) + { + ++it; + d->activePart->factory()->addClient(plugin); + } + } + } +} + +void KonqExtensionManager::slotApply() +{ + apply(); +} + +void KonqExtensionManager::slotOk() +{ + emit okClicked(); + apply(); + accept(); +} + +void KonqExtensionManager::show() +{ + d->pluginSelector->load(); + + KDialogBase::show(); +} + +#include "konq_extensionmanager.moc" -- cgit v1.2.1