/** If clipboard has mime type application/x-uml-clip2, Pastes the data from the clipboard into the current Doc */ bool UMLClipboard::pasteClip2(QMimeSource* data) { UMLDoc *doc = UMLApp::app()->getDocument(); UMLListViewItemList itemdatalist; UMLObjectList objects; objects.setAutoDelete(false); UMLViewList views; IDChangeLog* idchanges = 0; bool result = UMLDrag::decodeClip2(data, objects, itemdatalist, views); if(!result) { return false; } UMLObject *obj = 0; UMLObjectListIt object_it(objects); idchanges = doc->getChangeLog(); if(!idchanges) { return false; } while ( (obj=object_it.current()) != 0 ) { ++object_it; if(!doc->assignNewIDs(obj)) { kDebug()<<"UMLClipboard: error adding umlobject"<<endl; return false; } } UMLView * pView = 0; UMLViewListIt view_it( views ); while ( ( pView =view_it.current()) != 0 ) { ++view_it; if( !doc->addUMLView( pView ) ) { return false; } } UMLListView *listView = UMLApp::app()->getListView(); UMLListViewItem* item = 0; UMLListViewItem* itemdata = 0; UMLListViewItemListIt it(itemdatalist); while ( (itemdata=it.current()) != 0 ) { item = listView->createItem(*itemdata, *idchanges); if(!item) { return false; } if(itemdata -> childCount()) { if(!pasteChildren(item, idchanges)) { return false; } } ++it; } return result; }