From 62ad5bdb02a20117691078bd6ffe0914e68709bf Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 26 Mar 2009 07:31:03 -0400 Subject: Use PluginBase in storage in PluginLoader --- sigtools/PluginLoader.cpp | 8 +++++++- sigtools/PluginLoader.h | 2 ++ sigtools/PluginLoader_p.h | 13 +++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'sigtools') diff --git a/sigtools/PluginLoader.cpp b/sigtools/PluginLoader.cpp index d6f039e9..051632e6 100644 --- a/sigtools/PluginLoader.cpp +++ b/sigtools/PluginLoader.cpp @@ -20,6 +20,7 @@ #include "PluginLoader_p.h" // Sigencore plugin includes +#include #include #include @@ -46,6 +47,11 @@ KService::Ptr PluginLoader::service(const QString& type, const QString& name) return loader->service(type, name); } +PluginBase* PluginLoader::plugin(const QString& type, const QString& name) +{ + return loader->factory(type, name); +} + ArenaPlugin* PluginLoader::pluginForArena(const QString& arena) { return qobject_cast(loader->factory("Arena", arena)); @@ -120,7 +126,7 @@ KService::Ptr PluginLoader::Private::service(const QString& type, const QString& return KService::Ptr(); } -QObject* PluginLoader::Private::factory(const QString& type, const QString& name) +PluginBase* PluginLoader::Private::factory(const QString& type, const QString& name) { if (!m_available.contains(type)) refresh(type); diff --git a/sigtools/PluginLoader.h b/sigtools/PluginLoader.h index c5d96cb5..17e092f6 100644 --- a/sigtools/PluginLoader.h +++ b/sigtools/PluginLoader.h @@ -34,6 +34,7 @@ namespace Plugins { class ArenaPlugin; class CanvasPlugin; +class PluginBase; } } namespace Sigscript @@ -49,6 +50,7 @@ namespace PluginLoader SIGTOOLS_EXPORT QStringList availablePlugins(const QString& type, const bool forceLookup = false); SIGTOOLS_EXPORT KService::Ptr service(const QString& type, const QString& name); + SIGTOOLS_EXPORT Sigencore::Plugins::PluginBase* plugin(const QString& type, const QString& name); SIGTOOLS_EXPORT Sigencore::Plugins::ArenaPlugin* pluginForArena(const QString& arena); SIGTOOLS_EXPORT Sigencore::Plugins::CanvasPlugin* pluginForCanvas(const QString& canvas); diff --git a/sigtools/PluginLoader_p.h b/sigtools/PluginLoader_p.h index d48d57df..acd3125e 100644 --- a/sigtools/PluginLoader_p.h +++ b/sigtools/PluginLoader_p.h @@ -28,6 +28,15 @@ #include #include +// Forward declarations +namespace Sigencore +{ +namespace Plugins +{ +class PluginBase; +} +} + namespace Sigtools { namespace PluginLoader @@ -39,9 +48,9 @@ class SIGTOOLS_NO_EXPORT Private : public QObject public: void refresh(const QString& type); KService::Ptr service(const QString& type, const QString& name); - QObject* factory(const QString& type, const QString& name); + Sigencore::Plugins::PluginBase* factory(const QString& type, const QString& name); - typedef QPair Service; + typedef QPair Service; typedef QMap PluginList; QMap m_available; }; -- cgit