DataSourceTreeWidget.cpp
47 lines
| 1.5 KiB
| text/x-c
|
CppLexer
r876 | #include "DataSource/DataSourceTreeWidget.h" | |||
#include "Common/MimeTypesDef.h" | ||||
#include "DataSource/DataSourceController.h" | ||||
#include "DataSource/DataSourceItem.h" | ||||
#include "DataSource/DataSourceTreeWidgetItem.h" | ||||
r1110 | #include "DragAndDrop/DragDropGuiController.h" | |||
r876 | #include "SqpApplication.h" | |||
#include <QMimeData> | ||||
r913 | DataSourceTreeWidget::DataSourceTreeWidget(QWidget *parent) : QTreeWidget(parent) | |||
{ | ||||
} | ||||
r876 | ||||
QMimeData *DataSourceTreeWidget::mimeData(const QList<QTreeWidgetItem *> items) const | ||||
{ | ||||
auto mimeData = new QMimeData; | ||||
// Basic check to ensure the item are correctly typed | ||||
Q_ASSERT(items.isEmpty() || dynamic_cast<DataSourceTreeWidgetItem *>(items.first()) != nullptr); | ||||
QVariantList productData; | ||||
for (auto item : items) { | ||||
auto dataSourceTreeItem = static_cast<DataSourceTreeWidgetItem *>(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; | ||||
} | ||||
r883 | ||||
void DataSourceTreeWidget::startDrag(Qt::DropActions supportedActions) | ||||
{ | ||||
// Resets the drag&drop operations before it's starting | ||||
r1110 | sqpApp->dragDropGuiController().resetDragAndDrop(); | |||
r883 | QTreeWidget::startDrag(supportedActions); | |||
} | ||||