#include "DataSource/DataSourceTreeWidget.h" #include "Common/MimeTypesDef.h" #include "DataSource/DataSourceItem.h" #include "DataSource/DataSourceTreeWidgetItem.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; } } QByteArray encodedData; QDataStream stream(&encodedData, QIODevice::WriteOnly); stream << productData; mimeData->setData(MIME_TYPE_PRODUCT_LIST, encodedData); return mimeData; }