##// END OF EJS Templates
Fix the cosinus bug....
Fix the cosinus bug. The provider now works on the variable controller thread instead of the main thread. That means the visu is still usable during zoom operation

File last commit:

r167:31990a7209fc
r298:3a08c66e4df2
Show More
MockPlugin.cpp
81 lines | 2.8 KiB | text/x-c | CppLexer
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129 #include "MockPlugin.h"
#include "CosinusProvider.h"
Alexandre Leroux
Create mock plugin
r99
#include <DataSource/DataSourceController.h>
#include <DataSource/DataSourceItem.h>
Alexandre Leroux
Adds action in the mock plugin to load products
r146 #include <DataSource/DataSourceItemAction.h>
Alexandre Leroux
Create mock plugin
r99
#include <SqpApplication.h>
Q_LOGGING_CATEGORY(LOG_MockPlugin, "MockPlugin")
namespace {
/// Name of the data source
const auto DATA_SOURCE_NAME = QStringLiteral("MMS");
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129 /// Creates the data provider relative to the plugin
std::unique_ptr<IDataProvider> createDataProvider() noexcept
Alexandre Leroux
Create mock plugin
r99 {
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129 return std::make_unique<CosinusProvider>();
Alexandre Leroux
Create mock plugin
r99 }
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 std::unique_ptr<DataSourceItem> createProductItem(const QString &productName,
const QUuid &dataSourceUid)
Alexandre Leroux
Adds action in the mock plugin to load products
r146 {
auto result = std::make_unique<DataSourceItem>(DataSourceItemType::PRODUCT,
QVector<QVariant>{productName});
// Add action to load product from DataSourceController
result->addAction(std::make_unique<DataSourceItemAction>(
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 QObject::tr("Load %1 product").arg(productName),
[productName, dataSourceUid](DataSourceItem &item) {
Alexandre Leroux
Adds action in the mock plugin to load products
r146 if (auto app = sqpApp) {
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 app->dataSourceController().loadProductItem(dataSourceUid, item);
Alexandre Leroux
Adds action in the mock plugin to load products
r146 }
}));
return result;
}
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129 /// Creates the data source item relative to the plugin
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 std::unique_ptr<DataSourceItem> createDataSourceItem(const QUuid &dataSourceUid) noexcept
Alexandre Leroux
Create mock plugin
r99 {
// Magnetic field products
auto magneticFieldFolder = std::make_unique<DataSourceItem>(
DataSourceItemType::NODE, QVector<QVariant>{QStringLiteral("Magnetic field")});
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 magneticFieldFolder->appendChild(createProductItem(QStringLiteral("FGM"), dataSourceUid));
magneticFieldFolder->appendChild(createProductItem(QStringLiteral("SC"), dataSourceUid));
Alexandre Leroux
Create mock plugin
r99
// Electric field products
auto electricFieldFolder = std::make_unique<DataSourceItem>(
DataSourceItemType::NODE, QVector<QVariant>{QStringLiteral("Electric field")});
// Root
auto root = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
QVector<QVariant>{DATA_SOURCE_NAME});
root->appendChild(std::move(magneticFieldFolder));
root->appendChild(std::move(electricFieldFolder));
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129 return root;
}
} // 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);
// Sets data source tree
Alexandre Leroux
Updates DataSourceController::loadProductItem() method...
r167 dataSourceController.setDataSourceItem(dataSourceUid, createDataSourceItem(dataSourceUid));
Alexandre Leroux
Updates the MockPlugin::initialize() to create a cosinus provider and register it to the data source controller
r129
// Sets data provider
dataSourceController.setDataProvider(dataSourceUid, createDataProvider());
}
else {
qCWarning(LOG_MockPlugin()) << tr("Can't access to SciQlop application");
}
Alexandre Leroux
Create mock plugin
r99 }