##// END OF EJS Templates
Changes the name of the mokc plugin nodes to facilitate their access in the merged tree
Alexandre Leroux -
r1043:a94048bf05e3
parent child
Show More
@@ -1,118 +1,118
1 1 #include "MockPlugin.h"
2 2 #include "CosinusProvider.h"
3 3 #include "MockDefs.h"
4 4
5 5 #include <DataSource/DataSourceController.h>
6 6 #include <DataSource/DataSourceItem.h>
7 7 #include <DataSource/DataSourceItemAction.h>
8 8
9 9 #include <SqpApplication.h>
10 10
11 11 Q_LOGGING_CATEGORY(LOG_MockPlugin, "MockPlugin")
12 12
13 13 namespace {
14 14
15 15 /// Name of the data source
16 16 const auto DATA_SOURCE_NAME = QStringLiteral("MMS");
17 17
18 18 /// Creates the data provider relative to the plugin
19 19 std::unique_ptr<IDataProvider> createDataProvider() noexcept
20 20 {
21 21 return std::make_unique<CosinusProvider>();
22 22 }
23 23
24 24 std::unique_ptr<DataSourceItem> createProductItem(const QVariantHash &data,
25 25 const QUuid &dataSourceUid)
26 26 {
27 27 auto result = std::make_unique<DataSourceItem>(DataSourceItemType::PRODUCT, data);
28 28
29 29 // Adds plugin name to product metadata
30 30 result->setData(DataSourceItem::PLUGIN_DATA_KEY, DATA_SOURCE_NAME);
31 31
32 32 auto productName = data.value(DataSourceItem::NAME_DATA_KEY).toString();
33 33
34 34 // Add action to load product from DataSourceController
35 35 result->addAction(std::make_unique<DataSourceItemAction>(
36 36 QObject::tr("Load %1 product").arg(productName),
37 37 [productName, dataSourceUid](DataSourceItem &item) {
38 38 if (auto app = sqpApp) {
39 39 app->dataSourceController().loadProductItem(dataSourceUid, item);
40 40 }
41 41 }));
42 42
43 43 return result;
44 44 }
45 45
46 46 /// Creates the data source item relative to the plugin
47 47 std::unique_ptr<DataSourceItem> createDataSourceItem(const QUuid &dataSourceUid) noexcept
48 48 {
49 49 // Magnetic field products
50 50 auto magneticFieldFolder = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
51 QStringLiteral("Magnetic field"));
51 QStringLiteral("_Magnetic field"));
52 52 magneticFieldFolder->appendChild(
53 53 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 10 Hz")},
54 54 {COSINUS_TYPE_KEY, "scalar"},
55 55 {COSINUS_FREQUENCY_KEY, 10.}},
56 56 dataSourceUid));
57 57 magneticFieldFolder->appendChild(
58 58 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 60 Hz")},
59 59 {COSINUS_TYPE_KEY, "scalar"},
60 60 {COSINUS_FREQUENCY_KEY, 60.}},
61 61 dataSourceUid));
62 62 magneticFieldFolder->appendChild(
63 63 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 100 Hz")},
64 64 {COSINUS_TYPE_KEY, "scalar"},
65 65 {COSINUS_FREQUENCY_KEY, 100.}},
66 66 dataSourceUid));
67 67 magneticFieldFolder->appendChild(
68 68 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 10 Hz")},
69 69 {COSINUS_TYPE_KEY, "vector"},
70 70 {COSINUS_FREQUENCY_KEY, 10.}},
71 71 dataSourceUid));
72 72 magneticFieldFolder->appendChild(
73 73 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 60 Hz")},
74 74 {COSINUS_TYPE_KEY, "vector"},
75 75 {COSINUS_FREQUENCY_KEY, 60.}},
76 76 dataSourceUid));
77 77 magneticFieldFolder->appendChild(
78 78 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 100 Hz")},
79 79 {COSINUS_TYPE_KEY, "vector"},
80 80 {COSINUS_FREQUENCY_KEY, 100.}},
81 81 dataSourceUid));
82 82 magneticFieldFolder->appendChild(
83 83 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Spectrogram 1 Hz")},
84 84 {COSINUS_TYPE_KEY, "spectrogram"},
85 85 {COSINUS_FREQUENCY_KEY, 1.}},
86 86 dataSourceUid));
87 87
88 88 // Electric field products
89 89 auto electricFieldFolder = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
90 QStringLiteral("Electric field"));
90 QStringLiteral("_Electric field"));
91 91
92 92 // Root
93 93 auto root = std::make_unique<DataSourceItem>(DataSourceItemType::NODE, DATA_SOURCE_NAME);
94 94 root->appendChild(std::move(magneticFieldFolder));
95 95 root->appendChild(std::move(electricFieldFolder));
96 96
97 97 return root;
98 98 }
99 99
100 100 } // namespace
101 101
102 102 void MockPlugin::initialize()
103 103 {
104 104 if (auto app = sqpApp) {
105 105 // Registers to the data source controller
106 106 auto &dataSourceController = app->dataSourceController();
107 107 auto dataSourceUid = dataSourceController.registerDataSource(DATA_SOURCE_NAME);
108 108
109 109 // Sets data source tree
110 110 dataSourceController.setDataSourceItem(dataSourceUid, createDataSourceItem(dataSourceUid));
111 111
112 112 // Sets data provider
113 113 dataSourceController.setDataProvider(dataSourceUid, createDataProvider());
114 114 }
115 115 else {
116 116 qCWarning(LOG_MockPlugin()) << tr("Can't access to SciQlop application");
117 117 }
118 118 }
General Comments 0
You need to be logged in to leave comments. Login now