GridFrame/diagramCavas/source/diagramEditor/diagramEditorStructContaine...

68 lines
1.6 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;
}
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<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();
}