diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-04-11 02:25:57 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-04-11 02:27:39 -0400 |
| commit | 885942085b71c8dde8680a9f565d2837245845fd (patch) | |
| tree | 05659109c6bfd703b7a08d229da156df742ff437 /plugins | |
| parent | 94b1a10f6b340f1827c90f3501cd0becca8ac11f (diff) | |
| download | sigen-885942085b71c8dde8680a9f565d2837245845fd.tar.gz sigen-885942085b71c8dde8680a9f565d2837245845fd.tar.xz sigen-885942085b71c8dde8680a9f565d2837245845fd.zip | |
Discover Kross plugins that are installed
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/arena/kross/SigenArenaKross.cpp | 18 | ||||
| -rw-r--r-- | plugins/arena/kross/SigenArenaKross.h | 5 |
2 files changed, 22 insertions, 1 deletions
diff --git a/plugins/arena/kross/SigenArenaKross.cpp b/plugins/arena/kross/SigenArenaKross.cpp index 362640e4..892a6014 100644 --- a/plugins/arena/kross/SigenArenaKross.cpp +++ b/plugins/arena/kross/SigenArenaKross.cpp @@ -23,6 +23,8 @@ // KDE includes #include <KIcon> +#include <KServiceTypeTrader> +#include <kross/core/manager.h> SIGEN_ARENA_PLUGIN_VERSION(SigenArenaKross, "sigen_arena_kross", 000101) @@ -33,6 +35,16 @@ using namespace Sigencore::Plugins; SigenArenaKross::SigenArenaKross(QObject* parent, const QVariantList& args) : ArenaPlugin(parent, args) { + KService::List services; + const QString versionQuery = ""; + QStringList interpreterQueries; + const QStringList interpreters = Kross::Manager::self().interpreters(); + foreach (const QString& interpreter, interpreters) + interpreterQueries.append(QString("([X-Sigen-Kross-Interpreter] == %1)").arg(interpreter)); + if (interpreterQueries.size()) + services = KServiceTypeTrader::self()->query("Sigen/Arena/Kross", QString("([X-Sigen-MinVersion] <= 000101) and (%1)").arg(interpreterQueries.join(" or "))); + foreach (KService::Ptr service, services) + m_scripts[service->name()] = service; } SigenArenaKross::~SigenArenaKross() @@ -41,16 +53,20 @@ SigenArenaKross::~SigenArenaKross() QStringList SigenArenaKross::classList() const { - return QStringList(); + return m_scripts.keys(); } QString SigenArenaKross::description(const QString& name) const { + if (m_scripts.contains(name)) + return m_scripts[name]->comment(); return "(Unknown arena)"; } QIcon SigenArenaKross::icon(const QString& name) { + if (m_scripts.contains(name)) + return KIcon(m_scripts[name]->icon()); return KIcon(); } diff --git a/plugins/arena/kross/SigenArenaKross.h b/plugins/arena/kross/SigenArenaKross.h index d8c3d226..d6984804 100644 --- a/plugins/arena/kross/SigenArenaKross.h +++ b/plugins/arena/kross/SigenArenaKross.h @@ -21,6 +21,9 @@ // Sigencore plugin includes #include <sigencore/plugins/ArenaPlugin.h> +// KDE includes +#include <KService> + class SigenArenaKross : public Sigencore::Plugins::ArenaPlugin { Q_OBJECT @@ -36,6 +39,8 @@ class SigenArenaKross : public Sigencore::Plugins::ArenaPlugin Sigencore::Arena* createArena(const QString& name, Sigscript::GameWrapper* game, Sigscript::Config* parent); protected slots: void cleanupArena(Sigencore::Arena* arena); + private: + QMap<QString, KService::Ptr> m_scripts; }; #endif |
