DiagramDesigner/diagramCavas/source/diagramEditor/diagramEditorStructContaine...

50 lines
1.2 KiB
C++

#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;
}
QMap<int,QList<DiagramEditorBlockInfo>> DiagramEditorStructContainer::getMapBlocksData()
{
QMap<int,QList<DiagramEditorBlockInfo>> map;
for(auto iter = _mapBlocks.begin();iter != _mapBlocks.end();++iter){
QList<DiagramEditorBlockInfo> 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();
}