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