- }
- else if (event->mimeData()->hasText())
- {
- QTreeWidgetItem *item = itemAt(event->pos());
- if (item) {
- if (item->parent()) item = item->parent();
- if (((ProjectItem *) item)->isGroup()) {
- //emit addClip(event->mimeData->text());
- kDebug()<<"//////////////// DROPPED RIGHT 1 ";
- QList <QTreeWidgetItem *> list;
- list = selectedItems ();
- ProjectItem *clone;
- foreach (QTreeWidgetItem *it, list) {
- // TODO allow dragging of folders ?
- if (!((ProjectItem *) it)->isGroup() && ((ProjectItem *) it)->clipId() < 10000) {
- if (it->parent()) clone = (ProjectItem* ) it->parent()->takeChild(it->parent()->indexOfChild(it));
- else clone = (ProjectItem* ) takeTopLevelItem(indexOfTopLevelItem(it));
- if (clone) item->addChild(clone);
- }
- }
- }
- else item = NULL;
+ } else if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
+ ProjectItem *item = static_cast <ProjectItem *>(itemAt(event->pos()));
+ if (item) {
+ if (item->parent()) item = static_cast <ProjectItem *>(item->parent());
+ if (item->isGroup()) {
+ //emit addClip(event->mimeData->text());
+ kDebug() << "//////////////// DROPPED RIGHT 1 ";
+ const QList <QTreeWidgetItem *> list = selectedItems();
+ ProjectItem *clone;
+ QString parentId = item->clipId();
+ foreach(QTreeWidgetItem *it, list) {
+ // TODO allow dragging of folders ?
+ if (!((ProjectItem *) it)->isGroup()/* && ((ProjectItem *) it)->clipId() < 10000*/) {
+ if (it->parent()) clone = (ProjectItem*) it->parent()->takeChild(it->parent()->indexOfChild(it));
+ else clone = (ProjectItem*) takeTopLevelItem(indexOfTopLevelItem(it));
+ if (clone) {
+ item->addChild(clone);
+ QMap <QString, QString> props;
+ props.insert("groupname", item->groupName());
+ props.insert("groupid", parentId);
+ clone->setProperties(props);
+ }
+ }
+ }
+ } else item = NULL;
+ }
+ if (!item) {
+ kDebug() << "//////////////// DROPPED ON EMPTY ZONE";
+ // item dropped in empty zone, move it to top level
+ const QList <QTreeWidgetItem *> list = selectedItems();
+ ProjectItem *clone;
+ foreach(QTreeWidgetItem *it, list) {
+ QTreeWidgetItem *parent = it->parent();
+ if (parent/* && ((ProjectItem *) it)->clipId() < 10000*/) {
+ kDebug() << "++ item parent: " << parent->text(1);
+ clone = static_cast <ProjectItem*>(parent->takeChild(parent->indexOfChild(it)));
+ if (clone) {
+ addTopLevelItem(clone);
+ clone->clearProperty("groupname");
+ clone->clearProperty("groupid");
+ }
+ }
+ }
+ }