summaryrefslogtreecommitdiffstats
path: root/konqueror/konq_extensionmanager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/konq_extensionmanager.cc')
-rw-r--r--konqueror/konq_extensionmanager.cc147
1 files changed, 147 insertions, 0 deletions
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 <klingens@kde.org>
+ Copyright (c) 2004 by Arend van Beelen jr. <arend@auton.nl>
+
+ *************************************************************************
+ * *
+ * 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 <qlayout.h>
+#include <qtimer.h>
+
+#include <kconfig.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kparts/componentfactory.h>
+#include <kparts/plugin.h>
+#include <kplugininfo.h>
+#include <kpluginselector.h>
+#include <ksettings/dispatcher.h>
+#include <dcopref.h>
+
+#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<KParts::Plugin> plugins = KParts::Plugin::pluginObjects(d->mainWindow);
+ QPtrListIterator<KParts::Plugin> 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<KParts::Plugin> plugins = KParts::Plugin::pluginObjects( d->activePart );
+ QPtrListIterator<KParts::Plugin> 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"