#include "diagramEditor/diagramEditorStructContainer.h" #include "diagramEditor/diagramEditorBaseBlock.h" DiagramEditorStructContainer::DiagramEditorStructContainer(QObject *parent) : QObject(parent) { } DiagramEditorStructContainer::~DiagramEditorStructContainer() { clearData(); } bool DiagramEditorStructContainer::insertBlock(int nPos,DiagramEditorBaseBlock* p) { for(auto& pBlock:_mapBlocks[nPos]){ if(pBlock == p) return false; } p->setCurContainer(this); //目标block所属container p->setContainerLevel(nPos); _mapBlocks[nPos].append(p); return true; } bool DiagramEditorStructContainer::changeBlockLocate(DiagramEditorBaseBlock* p,int src,int dest) { bool bFind = false; for(int i = 0; i < _mapBlocks[src].size();++i){ if(_mapBlocks[src].value(i) == p) { _mapBlocks[src].removeAt(i); bFind = true; break; } } if(bFind){ _mapBlocks[dest].append(p); return true; } return false; } QMap> DiagramEditorStructContainer::getMapBlocksData() { QMap> map; for(auto iter = _mapBlocks.begin();iter != _mapBlocks.end();++iter){ QList lstInfo; for(auto pBlock:iter.value()){ auto info = pBlock->getBlockInfo(); lstInfo.append(info); } map.insert(iter.key(),lstInfo); } return map; } void DiagramEditorStructContainer::clearData() { /*for(auto &lstCon:_mapBlocks){ qDeleteAll(lstCon); }*/ _mapBlocks.clear(); }