Database: sqlite default to appdata kworship.db
[kworship.git] / kworship / KwPluginManager.cpp
blobfa1d828ea7574303a636a4f97ffa47ea709d655b
1 /***************************************************************************
2 * This file is part of KWorship. *
3 * Copyright 2008 James Hogan <james@albanarts.com> *
4 * *
5 * KWorship is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * KWorship is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with KWorship. If not, write to the Free Software Foundation, *
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
18 ***************************************************************************/
20 /**
21 * @file KwPluginManager.cpp
22 * @brief Manages KWorship plugins.
23 * @author James Hogan <james@albanarts.com>
26 #include "KwPluginManager.h"
27 #include "KwPlugin.h"
29 #include <KServiceTypeTrader>
30 #include <KXmlGuiWindow>
31 #include <KXMLGUIFactory>
34 * Constructors + destructor
37 /// Primary constructor.
38 KwPluginManager::KwPluginManager()
39 : m_mainWindow(0)
40 , m_plugins()
44 /// Destructor.
45 KwPluginManager::~KwPluginManager()
47 foreach (KwPlugin* plugin, m_plugins)
49 plugin->unload();
50 delete plugin;
55 * Plugin loading and unloading
58 /// Set the main window.
59 void KwPluginManager::setMainWindow(KXmlGuiWindow* mainWindow)
61 m_mainWindow = mainWindow;
64 /// Directly load a plugin.
65 bool KwPluginManager::loadPlugin(KwPlugin* plugin)
67 const QString& id = plugin->id();
68 Q_ASSERT(!plugin->isLoaded());
69 if (!m_plugins.contains(id))
71 m_plugins[id] = plugin;
72 if (m_mainWindow)
74 m_mainWindow->guiFactory()->addClient(plugin);
76 plugin->load();
77 return true;
79 return false;
82 /// Setup config dialog to include the plugin.
83 void KwPluginManager::setupConfigDialog(KConfigDialog* dialog)
85 foreach (KwPlugin* plugin, m_plugins)
87 plugin->setupConfigDialog(dialog);
91 #include <QtDebug>
92 /// Load all plugins.
93 void KwPluginManager::loadPlugins()
95 KService::List offers = KServiceTypeTrader::self()->query("KWorship/Plugin");
97 foreach (KService::Ptr service, offers)
99 qDebug() << "Found KWorship plugin: " << service->desktopEntryName();
100 QString err;
101 KwPlugin* plugin = service->createInstance<KwPlugin>(this, QVariantList(), &err);
102 if (plugin)
104 bool loaded = loadPlugin(plugin);
105 if (loaded)
107 qDebug() << " Loaded successfully";
109 else
111 qDebug() << " Could not be initialised";
114 else
116 qDebug() << " Could not be loaded: " << err;