1 /***************************************************************************
2 * This file is part of KWorship. *
3 * Copyright 2008 James Hogan <james@albanarts.com> *
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. *
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. *
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 ***************************************************************************/
21 * @file KwPluginManager.cpp
22 * @brief Manages KWorship plugins.
23 * @author James Hogan <james@albanarts.com>
26 #include "KwPluginManager.h"
29 #include <KServiceTypeTrader>
32 * Constructors + destructor
35 /// Primary constructor.
36 KwPluginManager::KwPluginManager()
42 KwPluginManager::~KwPluginManager()
44 foreach (KwPlugin
* plugin
, m_plugins
)
52 * Plugin loading and unloading
55 /// Directly load a plugin.
56 bool KwPluginManager::loadPlugin(KwPlugin
* plugin
)
58 const QString
& id
= plugin
->id();
59 Q_ASSERT(!plugin
->isLoaded());
60 if (!m_plugins
.contains(id
))
62 m_plugins
[id
] = plugin
;
71 void KwPluginManager::loadPlugins()
73 KService::List offers
= KServiceTypeTrader::self()->query("KWorship/Plugin");
75 foreach (KService::Ptr service
, offers
)
77 qDebug() << "Found KWorship plugin: " << service
->desktopEntryName();
79 KwPlugin
* plugin
= service
->createInstance
<KwPlugin
>(this, QVariantList(), &err
);
82 bool loaded
= loadPlugin(plugin
);
85 qDebug() << " Loaded successfully";
89 qDebug() << " Could not be initialised";
94 qDebug() << " Could not be loaded: " << err
;