DiagramDesigner/source/electricElementsBox.cpp

85 lines
2.0 KiB
C++

#include <QVBoxLayout>
#include <QJsonArray>
#include "electricElementsPanel.h"
#include "electricElementsBox.h"
#include "toolBox.h"
#include "util/baseSelector.h"
#include "dataBase.h"
#include "dataManager.h"
ElectricElementsBox::ElectricElementsBox(QObject *parent)
: QObject(parent),
m_pToolBox(nullptr)
{
m_pToolBox = new ToolBox();
}
ElectricElementsBox::~ElectricElementsBox()
{
if(m_pToolBox)
delete m_pToolBox;
}
void ElectricElementsBox::initial()
{
getModelInfo();
addPanelItems("Items");
}
void ElectricElementsBox::addPanelItems(const QString& sPanel)
{
ElectricElementsPanel* pPanel = new ElectricElementsPanel();
for(auto &model:_modelInfo)
{
GraphicsItemType localType = linkType[(AbstractItemType)model.modelType];
model.modelType = localType; //转换图元类别,从字典表转到内部类别
}
pPanel->setData(_modelInfo);
m_mapPanels.insert(sPanel,pPanel);
m_pToolBox->addWidget(sPanel,pPanel);
connect(pPanel,&ElectricElementsPanel::addGraphicsItem,this,&ElectricElementsBox::onSignal_addEletricItem);
}
ToolBox* ElectricElementsBox::getToolBox() const
{
return m_pToolBox;
}
void ElectricElementsBox::getModelInfo()
{
DataManager::instance().initialModelState();
DataManager::instance().initialModelData();
_modelInfo = DataManager::instance().modelState();
}
void ElectricElementsBox::updateModelList()
{
for(auto &model:_modelInfo)
{
GraphicsItemType localType = linkType[(AbstractItemType)model.modelType];
model.modelType = localType;
}
if(!m_mapPanels.isEmpty()) //暂时1个类别
{
QMap<QString,ElectricElementsPanel*>::iterator it = m_mapPanels.begin();
if(it != m_mapPanels.end())
{
it.value()->setData(_modelInfo);
}
}
}
void ElectricElementsBox::onSignal_addEletricItem(modelStateInfo& info)
{
emit addEletricItem(info);
}
void ElectricElementsBox::onSignal_modelChanged()
{
getModelInfo();
updateModelList();
}