diff --git a/libnymea-core/experiences/experiencemanager.cpp b/libnymea-core/experiences/experiencemanager.cpp index 21577018..5b48a090 100644 --- a/libnymea-core/experiences/experiencemanager.cpp +++ b/libnymea-core/experiences/experiencemanager.cpp @@ -48,6 +48,11 @@ ExperienceManager::ExperienceManager(ThingManager *thingManager, JsonRPCServer * staticMetaObject.invokeMethod(this, "loadPlugins", Qt::QueuedConnection); } +QList ExperienceManager::plugins() const +{ + return m_plugins; +} + void ExperienceManager::loadPlugins() { foreach (const QString &path, pluginSearchDirs()) { @@ -107,4 +112,12 @@ void ExperienceManager::loadExperiencePlugin(const QString &file) } +void ExperienceManager::loadExperiencePlugin(ExperiencePlugin *experiencePlugin) +{ + qCDebug(dcExperiences()) << "Adding experience plugin:" << experiencePlugin; + m_plugins.append(experiencePlugin); + experiencePlugin->setParent(this); + experiencePlugin->initPlugin(m_thingManager, m_jsonRpcServer); +} + } diff --git a/libnymea-core/experiences/experiencemanager.h b/libnymea-core/experiences/experiencemanager.h index 9fbf3583..6bda9d32 100644 --- a/libnymea-core/experiences/experiencemanager.h +++ b/libnymea-core/experiences/experiencemanager.h @@ -45,24 +45,22 @@ class ExperienceManager : public QObject public: explicit ExperienceManager(ThingManager *thingManager, JsonRPCServer *jsonRpcServer, QObject *parent = nullptr); -signals: + QList plugins() const; -public slots: + // This method is used for testing + void loadExperiencePlugin(ExperiencePlugin *experiencePlugin); private slots: void loadPlugins(); -private: - QStringList pluginSearchDirs() const; - private: ThingManager *m_thingManager = nullptr; JsonRPCServer *m_jsonRpcServer = nullptr; + QList m_plugins; + QStringList pluginSearchDirs() const; void loadExperiencePlugin(const QString &file); -private: - QList m_plugins; }; } diff --git a/libnymea-core/nymeacore.cpp b/libnymea-core/nymeacore.cpp index 8c5649d0..7eb8131f 100644 --- a/libnymea-core/nymeacore.cpp +++ b/libnymea-core/nymeacore.cpp @@ -665,6 +665,11 @@ ModbusRtuManager *NymeaCore::modbusRtuManager() const return m_modbusRtuManager; } +ExperienceManager *NymeaCore::experienceManager() const +{ + return m_experienceManager; +} + void NymeaCore::onEventTriggered(const Event &event) { emit eventTriggered(event); diff --git a/libnymea-core/nymeacore.h b/libnymea-core/nymeacore.h index db373ef0..c9370f4c 100644 --- a/libnymea-core/nymeacore.h +++ b/libnymea-core/nymeacore.h @@ -110,6 +110,7 @@ public: Platform *platform() const; ZigbeeManager *zigbeeManager() const; ModbusRtuManager *modbusRtuManager() const; + ExperienceManager *experienceManager() const; static QStringList getAvailableLanguages(); static QStringList loggingFilters();