From b566382d48079467a2ffd48c0fcace4a09ce2e1c Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Mon, 9 Jan 2012 11:12:05 +0100 Subject: [PATCH] add/remove associations plugin/engine --- .../plasmacomponentsplugin.cpp | 22 ++++++++++++++++++- .../plasmacomponents/plasmacomponentsplugin.h | 4 ++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/declarativeimports/plasmacomponents/plasmacomponentsplugin.cpp b/declarativeimports/plasmacomponents/plasmacomponentsplugin.cpp index f5f52e1a0..7c1beb50a 100644 --- a/declarativeimports/plasmacomponents/plasmacomponentsplugin.cpp +++ b/declarativeimports/plasmacomponents/plasmacomponentsplugin.cpp @@ -47,12 +47,32 @@ EngineBookKeeping *EngineBookKeeping::self() return &privateBKSelf->self; } -QDeclarativeEngine *engineFor(QDeclarativeItem *item) const +QDeclarativeEngine *EngineBookKeeping::engineFor(QDeclarativeItem *item) const { return 0; } +void EngineBookKeeping::insertPlugin(PlasmaComponentsPlugin *plugin, QDeclarativeEngine *engine) +{ + m_engines.insert(plugin, engine); +} +void EngineBookKeeping::removePlugin(PlasmaComponentsPlugin *plugin) +{ + m_engines.remove(plugin); +} + + +PlasmaComponentsPlugin::~PlasmaComponentsPlugin() +{ + EngineBookKeeping::self()->removePlugin(this); +} + +void PlasmaComponentsPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri) +{ + QDeclarativeExtensionPlugin::initializeEngine(engine, uri); + EngineBookKeeping::self()->insertPlugin(this, engine); +} void PlasmaComponentsPlugin::registerTypes(const char *uri) { diff --git a/declarativeimports/plasmacomponents/plasmacomponentsplugin.h b/declarativeimports/plasmacomponents/plasmacomponentsplugin.h index ebd5d8fa0..064c46110 100644 --- a/declarativeimports/plasmacomponents/plasmacomponentsplugin.h +++ b/declarativeimports/plasmacomponents/plasmacomponentsplugin.h @@ -33,6 +33,8 @@ public: EngineBookKeeping(); static EngineBookKeeping *self(); + void insertPlugin(PlasmaComponentsPlugin *plugin, QDeclarativeEngine *engine); + void removePlugin(PlasmaComponentsPlugin *plugin); QDeclarativeEngine *engineFor(QDeclarativeItem *item) const; private: @@ -44,6 +46,8 @@ class PlasmaComponentsPlugin : public QDeclarativeExtensionPlugin Q_OBJECT public: + ~PlasmaComponentsPlugin(); + void initializeEngine(QDeclarativeEngine *engine, const char *uri); void registerTypes(const char *uri); };