#include #include #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::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(); }