##// END OF EJS Templates
Adds a spectrogram product in the plugin tree (which can't be displayed for now)
Alexandre Leroux -
r897:2d1705a8d483
parent child
Show More
@@ -1,109 +1,114
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 auto productName = data.value(DataSourceItem::NAME_DATA_KEY).toString();
29 29
30 30 // Add action to load product from DataSourceController
31 31 result->addAction(std::make_unique<DataSourceItemAction>(
32 32 QObject::tr("Load %1 product").arg(productName),
33 33 [productName, dataSourceUid](DataSourceItem &item) {
34 34 if (auto app = sqpApp) {
35 35 app->dataSourceController().loadProductItem(dataSourceUid, item);
36 36 }
37 37 }));
38 38
39 39 return result;
40 40 }
41 41
42 42 /// Creates the data source item relative to the plugin
43 43 std::unique_ptr<DataSourceItem> createDataSourceItem(const QUuid &dataSourceUid) noexcept
44 44 {
45 45 // Magnetic field products
46 46 auto magneticFieldFolder = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
47 47 QStringLiteral("Magnetic field"));
48 48 magneticFieldFolder->appendChild(
49 49 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 10 Hz")},
50 50 {COSINUS_TYPE_KEY, "scalar"},
51 51 {COSINUS_FREQUENCY_KEY, 10.}},
52 52 dataSourceUid));
53 53 magneticFieldFolder->appendChild(
54 54 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 60 Hz")},
55 55 {COSINUS_TYPE_KEY, "scalar"},
56 56 {COSINUS_FREQUENCY_KEY, 60.}},
57 57 dataSourceUid));
58 58 magneticFieldFolder->appendChild(
59 59 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Scalar 100 Hz")},
60 60 {COSINUS_TYPE_KEY, "scalar"},
61 61 {COSINUS_FREQUENCY_KEY, 100.}},
62 62 dataSourceUid));
63 63 magneticFieldFolder->appendChild(
64 64 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 10 Hz")},
65 65 {COSINUS_TYPE_KEY, "vector"},
66 66 {COSINUS_FREQUENCY_KEY, 10.}},
67 67 dataSourceUid));
68 68 magneticFieldFolder->appendChild(
69 69 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 60 Hz")},
70 70 {COSINUS_TYPE_KEY, "vector"},
71 71 {COSINUS_FREQUENCY_KEY, 60.}},
72 72 dataSourceUid));
73 73 magneticFieldFolder->appendChild(
74 74 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Vector 100 Hz")},
75 75 {COSINUS_TYPE_KEY, "vector"},
76 76 {COSINUS_FREQUENCY_KEY, 100.}},
77 77 dataSourceUid));
78 magneticFieldFolder->appendChild(
79 createProductItem({{DataSourceItem::NAME_DATA_KEY, QStringLiteral("Spectrogram 1 Hz")},
80 {COSINUS_TYPE_KEY, "spectrogram"},
81 {COSINUS_FREQUENCY_KEY, 1.}},
82 dataSourceUid));
78 83
79 84 // Electric field products
80 85 auto electricFieldFolder = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
81 86 QStringLiteral("Electric field"));
82 87
83 88 // Root
84 89 auto root = std::make_unique<DataSourceItem>(DataSourceItemType::NODE, DATA_SOURCE_NAME);
85 90 root->appendChild(std::move(magneticFieldFolder));
86 91 root->appendChild(std::move(electricFieldFolder));
87 92
88 93 return root;
89 94 }
90 95
91 96 } // namespace
92 97
93 98 void MockPlugin::initialize()
94 99 {
95 100 if (auto app = sqpApp) {
96 101 // Registers to the data source controller
97 102 auto &dataSourceController = app->dataSourceController();
98 103 auto dataSourceUid = dataSourceController.registerDataSource(DATA_SOURCE_NAME);
99 104
100 105 // Sets data source tree
101 106 dataSourceController.setDataSourceItem(dataSourceUid, createDataSourceItem(dataSourceUid));
102 107
103 108 // Sets data provider
104 109 dataSourceController.setDataProvider(dataSourceUid, createDataProvider());
105 110 }
106 111 else {
107 112 qCWarning(LOG_MockPlugin()) << tr("Can't access to SciQlop application");
108 113 }
109 114 }
General Comments 0
You need to be logged in to leave comments. Login now