diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-06-06 18:33:20 -0400 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-06-06 18:33:20 -0400 |
commit | 51f1d2c9d6c2a2b89821143de8fc3bce95d8f164 (patch) | |
tree | 8c801023690e0e8b85ca402bc15be52953b948f6 /sigtools | |
parent | d1f49af94f06c5e658dd9d616fadde8694e74f2b (diff) | |
download | sigen-51f1d2c9d6c2a2b89821143de8fc3bce95d8f164.tar.gz sigen-51f1d2c9d6c2a2b89821143de8fc3bce95d8f164.tar.xz sigen-51f1d2c9d6c2a2b89821143de8fc3bce95d8f164.zip |
Add a query for plugins that have given extensions
Diffstat (limited to 'sigtools')
-rw-r--r-- | sigtools/PluginLoader.cpp | 15 | ||||
-rw-r--r-- | sigtools/PluginLoader.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/sigtools/PluginLoader.cpp b/sigtools/PluginLoader.cpp index 2603c169..a155399c 100644 --- a/sigtools/PluginLoader.cpp +++ b/sigtools/PluginLoader.cpp @@ -35,6 +35,7 @@ // Qt includes #include <QtCore/QFile> +#include <QtCore/QSet> using namespace Sigmod; using namespace Sigscript; @@ -51,6 +52,20 @@ QStringList PluginLoader::availablePlugins(const QString& type, const bool force return loader->services(type); } +QStringList PluginLoader::services(const QString& type, const QStringList& extensions) +{ + const QSet<QString> query = extensions.toSet(); + const QStringList names = loader->services(type); + QStringList list; + foreach (const QString& name, names) + { + PluginBase* plugin = loader->factory(type, name); + if (plugin && (plugin->extensions(name).toSet().intersect(query).size() == query.size())) + list.append(name); + } + return list; +} + KService::Ptr PluginLoader::service(const QString& type, const QString& name) { return loader->service(type, name); diff --git a/sigtools/PluginLoader.h b/sigtools/PluginLoader.h index ce8b6dc7..4d7460f7 100644 --- a/sigtools/PluginLoader.h +++ b/sigtools/PluginLoader.h @@ -50,6 +50,7 @@ namespace Sigtools namespace PluginLoader { SIGTOOLS_EXPORT QStringList availablePlugins(const QString& type, const bool forceLookup = false); + SIGTOOLS_EXPORT KService::List services(const QString& type, const QStringList& extensions); SIGTOOLS_EXPORT KService::Ptr service(const QString& type, const QString& name); SIGTOOLS_EXPORT QString description(const QString& type, const QString& name); |