Example #1
0
QMimeData* TreeWidget::mimeData(const QList<QTreeWidgetItem*> items) const
{
    QMimeData* data = new QMimeData();
    QByteArray encodedData;

    QDataStream stream(&encodedData, QIODevice::WriteOnly);

    foreach (const QTreeWidgetItem* item, items) {
        if (!item) {
            continue;
        }

        // Why not just pass pointers ??!!
        QTreeWidgetItem* clonedItem = item->clone();

        // #1097 Clearing icon will properly write this item into stream ...
        clonedItem->setIcon(0, QIcon());

        bool parentIsRoot = !item->parent() || item->parent() == invisibleRootItem();

        clonedItem->setData(0, ITEM_IS_TOPLEVEL, parentIsRoot);
        clonedItem->setData(0, ITEM_PARENT_TITLE, (parentIsRoot ? QString() : item->parent()->text(0))) ;
        clonedItem->write(stream);
        delete clonedItem;
    }

    data->setData(m_mimeType, encodedData);
    return data;
}
Example #2
0
void QTreeWidgetItemProto::write(QDataStream &out)	const
{
  QTreeWidgetItem *item = qscriptvalue_cast<QTreeWidgetItem*>(thisObject());
  if (item)
    item->write(out);
}