From be11fc26511e75456d4896708a959d1fcdc3fc07 2017-06-08 13:13:02 From: Alexandre Leroux Date: 2017-06-08 13:13:02 Subject: [PATCH] Create mock plugin --- diff --git a/plugins/mockplugin/include/MockPlugin.h b/plugins/mockplugin/include/MockPlugin.h new file mode 100644 index 0000000..7d18987 --- /dev/null +++ b/plugins/mockplugin/include/MockPlugin.h @@ -0,0 +1,27 @@ +#ifndef SCIQLOP_MOCKPLUGIN_H +#define SCIQLOP_MOCKPLUGIN_H + +#include + +#include + +#include + +Q_DECLARE_LOGGING_CATEGORY(LOG_MockPlugin) + +class DataSourceItem; + +class MockPlugin : public QObject, public IPlugin { + Q_OBJECT + Q_INTERFACES(IPlugin) + Q_PLUGIN_METADATA(IID "sciqlop.plugin.IPlugin" FILE "mockplugin.json") +public: + /// @sa IPlugin::initialize() + void initialize() override; + +private: + /// Creates the data source item relative to the plugin + std::unique_ptr createDataSourceItem() const noexcept; +}; + +#endif // SCIQLOP_MOCKPLUGIN_H diff --git a/plugins/mockplugin/resources/mockplugin.json b/plugins/mockplugin/resources/mockplugin.json new file mode 100644 index 0000000..09ac778 --- /dev/null +++ b/plugins/mockplugin/resources/mockplugin.json @@ -0,0 +1,3 @@ +{ + "name" : "MockPlugin" +} diff --git a/plugins/mockplugin/src/MockPlugin.cpp b/plugins/mockplugin/src/MockPlugin.cpp new file mode 100644 index 0000000..599ad04 --- /dev/null +++ b/plugins/mockplugin/src/MockPlugin.cpp @@ -0,0 +1,55 @@ +#include + +#include +#include + +#include + +Q_LOGGING_CATEGORY(LOG_MockPlugin, "MockPlugin") + +namespace { + +/// Name of the data source +const auto DATA_SOURCE_NAME = QStringLiteral("MMS"); + +} // namespace + +void MockPlugin::initialize() +{ + if (auto app = sqpApp) { + // Registers to the data source controller + auto &dataSourceController = app->dataSourceController(); + auto dataSourceUid = dataSourceController.registerDataSource(DATA_SOURCE_NAME); + + dataSourceController.setDataSourceItem(dataSourceUid, createDataSourceItem()); + } + else { + qCWarning(LOG_MockPlugin()) << tr("Can't access to SciQlop application"); + } +} + +std::unique_ptr MockPlugin::createDataSourceItem() const noexcept +{ + // Magnetic field products + auto fgmProduct = std::make_unique(DataSourceItemType::PRODUCT, + QVector{QStringLiteral("FGM")}); + auto scProduct = std::make_unique(DataSourceItemType::PRODUCT, + QVector{QStringLiteral("SC")}); + + auto magneticFieldFolder = std::make_unique( + DataSourceItemType::NODE, QVector{QStringLiteral("Magnetic field")}); + magneticFieldFolder->appendChild(std::move(fgmProduct)); + magneticFieldFolder->appendChild(std::move(scProduct)); + + // Electric field products + auto electricFieldFolder = std::make_unique( + DataSourceItemType::NODE, QVector{QStringLiteral("Electric field")}); + + // Root + auto root = std::make_unique(DataSourceItemType::NODE, + QVector{DATA_SOURCE_NAME}); + root->appendChild(std::move(magneticFieldFolder)); + root->appendChild(std::move(electricFieldFolder)); + + return std::move(root); +}