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