#include "DataSource/DataSourceTreeWidget.h" #include "Common/MimeTypesDef.h" #include "DataSource/DataSourceController.h" #include "DataSource/DataSourceItem.h" #include "DataSource/DataSourceTreeWidgetItem.h" #include "DragAndDrop/DragDropGuiController.h" #include "SqpApplication.h" #include DataSourceTreeWidget::DataSourceTreeWidget(QWidget *parent) : QTreeWidget(parent) { } QMimeData *DataSourceTreeWidget::mimeData(const QList items) const { auto mimeData = new QMimeData; // Basic check to ensure the item are correctly typed Q_ASSERT(items.isEmpty() || dynamic_cast(items.first()) != nullptr); QVariantList productData; for (auto item : items) { auto dataSourceTreeItem = static_cast(item); auto dataSource = dataSourceTreeItem->data(); if (dataSource->type() == DataSourceItemType::COMPONENT || dataSource->type() == DataSourceItemType::PRODUCT) { auto metaData = dataSource->data(); productData << metaData; } } auto encodedData = sqpApp->dataSourceController().mimeDataForProductsData(productData); mimeData->setData(MIME_TYPE_PRODUCT_LIST, encodedData); return mimeData; } void DataSourceTreeWidget::startDrag(Qt::DropActions supportedActions) { // Resets the drag&drop operations before it's starting sqpApp->dragDropGuiController().resetDragAndDrop(); QTreeWidget::startDrag(supportedActions); }