@@ -76,7 +76,7 public slots: | |||||
76 | void finalize(); |
|
76 | void finalize(); | |
77 |
|
77 | |||
78 | /// Request the creation of a variable from the ID_DATA_KEY of a product |
|
78 | /// Request the creation of a variable from the ID_DATA_KEY of a product | |
79 | void requestVariable(const QString &datasourceIdKey); |
|
79 | void requestVariableFromProductIdKey(const QString &datasourceIdKey); | |
80 |
|
80 | |||
81 | /// Request the creation of a variable from metadata of a product |
|
81 | /// Request the creation of a variable from metadata of a product | |
82 | void requestVariable(const QVariantHash &productData); |
|
82 | void requestVariable(const QVariantHash &productData); |
@@ -163,7 +163,7 void DataSourceController::finalize() | |||||
163 | impl->m_WorkingMutex.unlock(); |
|
163 | impl->m_WorkingMutex.unlock(); | |
164 | } |
|
164 | } | |
165 |
|
165 | |||
166 | void DataSourceController::requestVariable(const QString &datasourceIdKey) |
|
166 | void DataSourceController::requestVariableFromProductIdKey(const QString &datasourceIdKey) | |
167 | { |
|
167 | { | |
168 | auto sourceItem = impl->findDataSourceItem(datasourceIdKey); |
|
168 | auto sourceItem = impl->findDataSourceItem(datasourceIdKey); | |
169 |
|
169 |
@@ -7,6 +7,7 | |||||
7 | #include "Visualization/VisualizationWidget.h" |
|
7 | #include "Visualization/VisualizationWidget.h" | |
8 | #include "Visualization/operations/FindVariableOperation.h" |
|
8 | #include "Visualization/operations/FindVariableOperation.h" | |
9 |
|
9 | |||
|
10 | #include "DataSource/DataSourceController.h" | |||
10 | #include "Variable/Variable.h" |
|
11 | #include "Variable/Variable.h" | |
11 | #include "Variable/VariableController.h" |
|
12 | #include "Variable/VariableController.h" | |
12 |
|
13 | |||
@@ -286,11 +287,22 bool DragDropGuiController::checkMimeDataForVisualization( | |||||
286 | // result = false: cannot drop multiple variables in the visualisation |
|
287 | // result = false: cannot drop multiple variables in the visualisation | |
287 | } |
|
288 | } | |
288 | } |
|
289 | } | |
|
290 | else if (mimeData->hasFormat(MIME_TYPE_PRODUCT_LIST)) { | |||
|
291 | auto productDataList = sqpApp->dataSourceController().productsDataForMimeData( | |||
|
292 | mimeData->data(MIME_TYPE_PRODUCT_LIST)); | |||
|
293 | if (productDataList.count() == 1) { | |||
|
294 | result = true; | |||
|
295 | } | |||
|
296 | else { | |||
|
297 | // result = false: cannot drop multiple products in the visualisation | |||
|
298 | } | |||
|
299 | } | |||
289 | else { |
|
300 | else { | |
290 | // Other MIME data |
|
301 | // Other MIME data | |
291 | // no special rules, accepted by default |
|
302 | // no special rules, accepted by default | |
292 | result = true; |
|
303 | result = true; | |
293 | } |
|
304 | } | |
294 |
|
305 | |||
|
306 | ||||
295 | return result; |
|
307 | return result; | |
296 | } |
|
308 | } |
@@ -7,6 +7,7 | |||||
7 |
|
7 | |||
8 | #include "Visualization/MacScrollBarStyle.h" |
|
8 | #include "Visualization/MacScrollBarStyle.h" | |
9 |
|
9 | |||
|
10 | #include "DataSource/DataSourceController.h" | |||
10 | #include "Variable/VariableController.h" |
|
11 | #include "Variable/VariableController.h" | |
11 |
|
12 | |||
12 | #include "Common/MimeTypesDef.h" |
|
13 | #include "Common/MimeTypesDef.h" | |
@@ -69,6 +70,8 struct VisualizationTabWidget::VisualizationTabWidgetPrivate { | |||||
69 | void dropZone(int index, VisualizationTabWidget *tabWidget); |
|
70 | void dropZone(int index, VisualizationTabWidget *tabWidget); | |
70 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, |
|
71 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, | |
71 | VisualizationTabWidget *tabWidget); |
|
72 | VisualizationTabWidget *tabWidget); | |
|
73 | void dropProducts(const QVariantList &productsMetaData, int index, | |||
|
74 | VisualizationTabWidget *tabWidget); | |||
72 | }; |
|
75 | }; | |
73 |
|
76 | |||
74 | VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *parent) |
|
77 | VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *parent) | |
@@ -91,6 +94,8 VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *par | |||||
91 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
94 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
92 | ui->dragDropContainer->setMimeType(MIME_TYPE_VARIABLE_LIST, |
|
95 | ui->dragDropContainer->setMimeType(MIME_TYPE_VARIABLE_LIST, | |
93 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
96 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
|
97 | ui->dragDropContainer->setMimeType(MIME_TYPE_PRODUCT_LIST, | |||
|
98 | VisualizationDragDropContainer::DropBehavior::Inserted); | |||
94 |
|
99 | |||
95 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { |
|
100 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { | |
96 | return sqpApp->dragDropGuiController().checkMimeDataForVisualization(mimeData, |
|
101 | return sqpApp->dragDropGuiController().checkMimeDataForVisualization(mimeData, | |
@@ -229,6 +234,11 void VisualizationTabWidget::dropMimeData(int index, const QMimeData *mimeData) | |||||
229 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); |
|
234 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); | |
230 | impl->dropVariables(variables, index, this); |
|
235 | impl->dropVariables(variables, index, this); | |
231 | } |
|
236 | } | |
|
237 | else if (mimeData->hasFormat(MIME_TYPE_PRODUCT_LIST)) { | |||
|
238 | auto productsData = sqpApp->dataSourceController().productsDataForMimeData( | |||
|
239 | mimeData->data(MIME_TYPE_PRODUCT_LIST)); | |||
|
240 | impl->dropProducts(productsData, index, this); | |||
|
241 | } | |||
232 | else { |
|
242 | else { | |
233 | qCWarning(LOG_VisualizationZoneWidget()) |
|
243 | qCWarning(LOG_VisualizationZoneWidget()) | |
234 | << tr("VisualizationTabWidget::dropMimeData, unknown MIME data received."); |
|
244 | << tr("VisualizationTabWidget::dropMimeData, unknown MIME data received."); | |
@@ -352,3 +362,23 void VisualizationTabWidget::VisualizationTabWidgetPrivate::dropVariables( | |||||
352 |
|
362 | |||
353 | tabWidget->createZone(variables, index); |
|
363 | tabWidget->createZone(variables, index); | |
354 | } |
|
364 | } | |
|
365 | ||||
|
366 | void VisualizationTabWidget::VisualizationTabWidgetPrivate::dropProducts( | |||
|
367 | const QVariantList &productsMetaData, int index, VisualizationTabWidget *tabWidget) | |||
|
368 | { | |||
|
369 | // Note: the AcceptMimeDataFunction (set on the drop container) ensure there is a single and | |||
|
370 | // compatible variable here | |||
|
371 | if (productsMetaData.count() != 1) { | |||
|
372 | qCWarning(LOG_VisualizationZoneWidget()) | |||
|
373 | << tr("VisualizationTabWidget::dropProducts, dropping multiple products, operation " | |||
|
374 | "aborted."); | |||
|
375 | return; | |||
|
376 | } | |||
|
377 | ||||
|
378 | auto productData = productsMetaData.first().toHash(); | |||
|
379 | QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", | |||
|
380 | Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); | |||
|
381 | ||||
|
382 | ||||
|
383 | // TODO: add graph | |||
|
384 | } |
@@ -10,6 +10,7 | |||||
10 | #include "Common/VisualizationDef.h" |
|
10 | #include "Common/VisualizationDef.h" | |
11 |
|
11 | |||
12 | #include <Data/SqpRange.h> |
|
12 | #include <Data/SqpRange.h> | |
|
13 | #include <DataSource/DataSourceController.h> | |||
13 | #include <Time/TimeController.h> |
|
14 | #include <Time/TimeController.h> | |
14 | #include <Variable/Variable.h> |
|
15 | #include <Variable/Variable.h> | |
15 | #include <Variable/VariableController.h> |
|
16 | #include <Variable/VariableController.h> | |
@@ -78,6 +79,8 struct VisualizationZoneWidget::VisualizationZoneWidgetPrivate { | |||||
78 | void dropGraph(int index, VisualizationZoneWidget *zoneWidget); |
|
79 | void dropGraph(int index, VisualizationZoneWidget *zoneWidget); | |
79 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, |
|
80 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, | |
80 | VisualizationZoneWidget *zoneWidget); |
|
81 | VisualizationZoneWidget *zoneWidget); | |
|
82 | void dropProducts(const QVariantList &productsData, int index, | |||
|
83 | VisualizationZoneWidget *zoneWidget); | |||
81 | }; |
|
84 | }; | |
82 |
|
85 | |||
83 | VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *parent) |
|
86 | VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *parent) | |
@@ -94,6 +97,8 VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *p | |||||
94 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
97 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
95 | ui->dragDropContainer->setMimeType( |
|
98 | ui->dragDropContainer->setMimeType( | |
96 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); |
|
99 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); | |
|
100 | ui->dragDropContainer->setMimeType( | |||
|
101 | MIME_TYPE_PRODUCT_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); | |||
97 | ui->dragDropContainer->setMimeType(MIME_TYPE_TIME_RANGE, |
|
102 | ui->dragDropContainer->setMimeType(MIME_TYPE_TIME_RANGE, | |
98 | VisualizationDragDropContainer::DropBehavior::Merged); |
|
103 | VisualizationDragDropContainer::DropBehavior::Merged); | |
99 | ui->dragDropContainer->setMimeType(MIME_TYPE_ZONE, |
|
104 | ui->dragDropContainer->setMimeType(MIME_TYPE_ZONE, | |
@@ -477,6 +482,11 void VisualizationZoneWidget::dropMimeData(int index, const QMimeData *mimeData) | |||||
477 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); |
|
482 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); | |
478 | impl->dropVariables(variables, index, this); |
|
483 | impl->dropVariables(variables, index, this); | |
479 | } |
|
484 | } | |
|
485 | else if (mimeData->hasFormat(MIME_TYPE_PRODUCT_LIST)) { | |||
|
486 | auto products = sqpApp->dataSourceController().productsDataForMimeData( | |||
|
487 | mimeData->data(MIME_TYPE_PRODUCT_LIST)); | |||
|
488 | impl->dropProducts(products, index, this); | |||
|
489 | } | |||
480 | else { |
|
490 | else { | |
481 | qCWarning(LOG_VisualizationZoneWidget()) |
|
491 | qCWarning(LOG_VisualizationZoneWidget()) | |
482 | << tr("VisualizationZoneWidget::dropMimeData, unknown MIME data received."); |
|
492 | << tr("VisualizationZoneWidget::dropMimeData, unknown MIME data received."); | |
@@ -502,6 +512,14 void VisualizationZoneWidget::dropMimeDataOnGraph(VisualizationDragWidget *dragW | |||||
502 | graphWidget->addVariable(var, graphWidget->graphRange()); |
|
512 | graphWidget->addVariable(var, graphWidget->graphRange()); | |
503 | } |
|
513 | } | |
504 | } |
|
514 | } | |
|
515 | else if (mimeData->hasFormat(MIME_TYPE_PRODUCT_LIST)) { | |||
|
516 | auto products = sqpApp->dataSourceController().productsDataForMimeData( | |||
|
517 | mimeData->data(MIME_TYPE_PRODUCT_LIST)); | |||
|
518 | ||||
|
519 | auto productData = products.first().toHash(); | |||
|
520 | QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", | |||
|
521 | Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); | |||
|
522 | } | |||
505 | else if (mimeData->hasFormat(MIME_TYPE_TIME_RANGE)) { |
|
523 | else if (mimeData->hasFormat(MIME_TYPE_TIME_RANGE)) { | |
506 | auto range = TimeController::timeRangeForMimeData(mimeData->data(MIME_TYPE_TIME_RANGE)); |
|
524 | auto range = TimeController::timeRangeForMimeData(mimeData->data(MIME_TYPE_TIME_RANGE)); | |
507 | graphWidget->setGraphRange(range); |
|
525 | graphWidget->setGraphRange(range); | |
@@ -599,3 +617,23 void VisualizationZoneWidget::VisualizationZoneWidgetPrivate::dropVariables( | |||||
599 |
|
617 | |||
600 | zoneWidget->createGraph(variables, index); |
|
618 | zoneWidget->createGraph(variables, index); | |
601 | } |
|
619 | } | |
|
620 | ||||
|
621 | void VisualizationZoneWidget::VisualizationZoneWidgetPrivate::dropProducts( | |||
|
622 | const QVariantList &productsData, int index, VisualizationZoneWidget *zoneWidget) | |||
|
623 | { | |||
|
624 | // Note: the AcceptMimeDataFunction (set on the drop container) ensure there is a single and | |||
|
625 | // compatible variable here | |||
|
626 | if (productsData.count() != 1) { | |||
|
627 | qCWarning(LOG_VisualizationZoneWidget()) | |||
|
628 | << tr("VisualizationTabWidget::dropProducts, dropping multiple products, operation " | |||
|
629 | "aborted."); | |||
|
630 | return; | |||
|
631 | } | |||
|
632 | ||||
|
633 | auto productData = productsData.first().toHash(); | |||
|
634 | QMetaObject::invokeMethod(&sqpApp->dataSourceController(), "requestVariable", | |||
|
635 | Qt::QueuedConnection, Q_ARG(QVariantHash, productData)); | |||
|
636 | ||||
|
637 | ||||
|
638 | // TODO: add graph | |||
|
639 | } |
General Comments 0
You need to be logged in to leave comments.
Login now