@@ -76,7 +76,7 public slots: | |||
|
76 | 76 | void finalize(); |
|
77 | 77 | |
|
78 | 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 | 81 | /// Request the creation of a variable from metadata of a product |
|
82 | 82 | void requestVariable(const QVariantHash &productData); |
@@ -163,7 +163,7 void DataSourceController::finalize() | |||
|
163 | 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 | 168 | auto sourceItem = impl->findDataSourceItem(datasourceIdKey); |
|
169 | 169 |
@@ -7,6 +7,7 | |||
|
7 | 7 | #include "Visualization/VisualizationWidget.h" |
|
8 | 8 | #include "Visualization/operations/FindVariableOperation.h" |
|
9 | 9 | |
|
10 | #include "DataSource/DataSourceController.h" | |
|
10 | 11 | #include "Variable/Variable.h" |
|
11 | 12 | #include "Variable/VariableController.h" |
|
12 | 13 | |
@@ -286,11 +287,22 bool DragDropGuiController::checkMimeDataForVisualization( | |||
|
286 | 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 | 300 | else { |
|
290 | 301 | // Other MIME data |
|
291 | 302 | // no special rules, accepted by default |
|
292 | 303 | result = true; |
|
293 | 304 | } |
|
294 | 305 | |
|
306 | ||
|
295 | 307 | return result; |
|
296 | 308 | } |
@@ -7,6 +7,7 | |||
|
7 | 7 | |
|
8 | 8 | #include "Visualization/MacScrollBarStyle.h" |
|
9 | 9 | |
|
10 | #include "DataSource/DataSourceController.h" | |
|
10 | 11 | #include "Variable/VariableController.h" |
|
11 | 12 | |
|
12 | 13 | #include "Common/MimeTypesDef.h" |
@@ -69,6 +70,8 struct VisualizationTabWidget::VisualizationTabWidgetPrivate { | |||
|
69 | 70 | void dropZone(int index, VisualizationTabWidget *tabWidget); |
|
70 | 71 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, |
|
71 | 72 | VisualizationTabWidget *tabWidget); |
|
73 | void dropProducts(const QVariantList &productsMetaData, int index, | |
|
74 | VisualizationTabWidget *tabWidget); | |
|
72 | 75 | }; |
|
73 | 76 | |
|
74 | 77 | VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *parent) |
@@ -91,6 +94,8 VisualizationTabWidget::VisualizationTabWidget(const QString &name, QWidget *par | |||
|
91 | 94 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
92 | 95 | ui->dragDropContainer->setMimeType(MIME_TYPE_VARIABLE_LIST, |
|
93 | 96 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
97 | ui->dragDropContainer->setMimeType(MIME_TYPE_PRODUCT_LIST, | |
|
98 | VisualizationDragDropContainer::DropBehavior::Inserted); | |
|
94 | 99 | |
|
95 | 100 | ui->dragDropContainer->setAcceptMimeDataFunction([this](auto mimeData) { |
|
96 | 101 | return sqpApp->dragDropGuiController().checkMimeDataForVisualization(mimeData, |
@@ -229,6 +234,11 void VisualizationTabWidget::dropMimeData(int index, const QMimeData *mimeData) | |||
|
229 | 234 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); |
|
230 | 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 | 242 | else { |
|
233 | 243 | qCWarning(LOG_VisualizationZoneWidget()) |
|
234 | 244 | << tr("VisualizationTabWidget::dropMimeData, unknown MIME data received."); |
@@ -352,3 +362,23 void VisualizationTabWidget::VisualizationTabWidgetPrivate::dropVariables( | |||
|
352 | 362 | |
|
353 | 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 | 10 | #include "Common/VisualizationDef.h" |
|
11 | 11 | |
|
12 | 12 | #include <Data/SqpRange.h> |
|
13 | #include <DataSource/DataSourceController.h> | |
|
13 | 14 | #include <Time/TimeController.h> |
|
14 | 15 | #include <Variable/Variable.h> |
|
15 | 16 | #include <Variable/VariableController.h> |
@@ -78,6 +79,8 struct VisualizationZoneWidget::VisualizationZoneWidgetPrivate { | |||
|
78 | 79 | void dropGraph(int index, VisualizationZoneWidget *zoneWidget); |
|
79 | 80 | void dropVariables(const QList<std::shared_ptr<Variable> > &variables, int index, |
|
80 | 81 | VisualizationZoneWidget *zoneWidget); |
|
82 | void dropProducts(const QVariantList &productsData, int index, | |
|
83 | VisualizationZoneWidget *zoneWidget); | |
|
81 | 84 | }; |
|
82 | 85 | |
|
83 | 86 | VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *parent) |
@@ -94,6 +97,8 VisualizationZoneWidget::VisualizationZoneWidget(const QString &name, QWidget *p | |||
|
94 | 97 | VisualizationDragDropContainer::DropBehavior::Inserted); |
|
95 | 98 | ui->dragDropContainer->setMimeType( |
|
96 | 99 | MIME_TYPE_VARIABLE_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); |
|
100 | ui->dragDropContainer->setMimeType( | |
|
101 | MIME_TYPE_PRODUCT_LIST, VisualizationDragDropContainer::DropBehavior::InsertedAndMerged); | |
|
97 | 102 | ui->dragDropContainer->setMimeType(MIME_TYPE_TIME_RANGE, |
|
98 | 103 | VisualizationDragDropContainer::DropBehavior::Merged); |
|
99 | 104 | ui->dragDropContainer->setMimeType(MIME_TYPE_ZONE, |
@@ -477,6 +482,11 void VisualizationZoneWidget::dropMimeData(int index, const QMimeData *mimeData) | |||
|
477 | 482 | mimeData->data(MIME_TYPE_VARIABLE_LIST)); |
|
478 | 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 | 490 | else { |
|
481 | 491 | qCWarning(LOG_VisualizationZoneWidget()) |
|
482 | 492 | << tr("VisualizationZoneWidget::dropMimeData, unknown MIME data received."); |
@@ -502,6 +512,14 void VisualizationZoneWidget::dropMimeDataOnGraph(VisualizationDragWidget *dragW | |||
|
502 | 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 | 523 | else if (mimeData->hasFormat(MIME_TYPE_TIME_RANGE)) { |
|
506 | 524 | auto range = TimeController::timeRangeForMimeData(mimeData->data(MIME_TYPE_TIME_RANGE)); |
|
507 | 525 | graphWidget->setGraphRange(range); |
@@ -599,3 +617,23 void VisualizationZoneWidget::VisualizationZoneWidgetPrivate::dropVariables( | |||
|
599 | 617 | |
|
600 | 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