50 lines
1.2 KiB
C++
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();
|
|
}
|