#include "baseInfoDlg.h" #include "graphicsItem/electricBayItem.h" #include "graphicsDataModel/fixedPortsModel.h" #include "ui_baseInfoDlg.h" #include "dataBase.h" #include "global.h" #include "baseProperty.h" #include "basePropertyManager.h" #include "itemPropertyDlg.h" #include BaseInfoDlg::BaseInfoDlg(QWidget *parent) : BaseContentDlg(parent) , ui(new Ui::baseInfoDlg) ,_parentDlg(nullptr) { ui->setupUi(this); _stateGroup = new QButtonGroup(this); _stateGroup->addButton(ui->rb_inService,1); _stateGroup->addButton(ui->rb_outService,0); _stateGroup->setExclusive(true); initial(); } BaseInfoDlg::~BaseInfoDlg() { delete ui; } void BaseInfoDlg::initial() { connect(ui->btn_icon,&QPushButton::clicked,this,&BaseInfoDlg::onIconManagerClicked); } void BaseInfoDlg::createGroupView(groupStateInfo infos) { QList lstGrid = DataBase::GetInstance()->getAllGrid(); QList lstZone = DataBase::GetInstance()->getAllZone(); QList lstStation = DataBase::GetInstance()->getAllStation(); for(auto &info:lstGrid) { ui->cb_grid->addItem(info.name,info.id); } for(auto &info:lstZone) { ui->cb_zone->addItem(info.name,info.id); } for(auto &info:lstStation) { ui->cb_station->addItem(info.name,info.id); } } QMap BaseInfoDlg::getPropertyValue(BaseProperty* pPro) { QMap map; if(pPro) { pPro->setTag(ui->le_tag->text()); pPro->setPath(ui->le_nameSpace->text()); pPro->setName(ui->le_name->text()); pPro->setLabel(QJsonObject()); pPro->setDescription(ui->le_description->text()); pPro->setGrid(ui->cb_grid->currentText()); pPro->setZone(ui->cb_zone->currentText()); pPro->setStation(ui->cb_station->currentText()); QJsonObject connectBus; connectBus["bay_name"] = ui->le_bayName->text(); connectBus["bay_offset_outer"] = ui->le_idx_1->text(); connectBus["bay_offset_inner"] = ui->le_idx_2->text(); connectBus["from_uuid"] = ui->le_from->text(); connectBus["to_uuid"] = ui->le_to->text(); pPro->setConnectedBus(connectBus); pPro->setInService(_stateGroup->checkedId()); pPro->setState(ui->le_status->text().toInt()); emit BasePropertyManager::instance().dataChanged(pPro->uuid().toString()); } return map; } void BaseInfoDlg::setPropertyValue(QVariant var) { BaseProperty* pPro = static_cast(var.value()); if(pPro) { ui->le_uuid->setText(pPro->uuid().toString()); ui->le_tag->setText(pPro->tag()); ui->le_nameSpace->setText(pPro->path()); ui->le_name->setText(pPro->name()); ui->le_label->setText(""); //label josn格式暂不解析 ui->le_description->setText(pPro->description()); ui->cb_grid->setCurrentText(pPro->grid()); ui->cb_zone->setCurrentText(pPro->zone()); ui->cb_station->setCurrentText(pPro->station()); ui->le_status->setText(QString::number(pPro->state())); //page status字段将移动到component QJsonObject connectBus = pPro->connectedBus(); QString bay_name = connectBus["bay_name"].toString(); QString bay_offset_outer = connectBus["bay_offset_outer"].toString(); QString bay_offset_inner = connectBus["bay_offset_inner"].toString(); QString from_uuid = connectBus["from_uuid"].toString(); QString to_uuid = connectBus["to_uuid"].toString(); //ui->le_bayName->setText(bay_name); ui->le_idx_1->setText(bay_offset_outer); ui->le_idx_2->setText(bay_offset_inner); //ui->le_from->setText(from_uuid); //ui->le_to->setText(to_uuid); if(pPro->inService() == 1) ui->rb_inService->setChecked(true); else ui->rb_outService->setChecked(true); //间隔处理 BayProperty* pBay = nullptr; QMap mapBay = _curModelController->allBayItem(); for(auto& item:mapBay){ AbstractProperty* p = item->getProperty(); BayProperty* pBayPro = dynamic_cast(p); if(pBayPro){ QList lstCompo = pBayPro->getLstComponent(); //获取间隔下的component,找到本component对应的间隔 for(auto& id:lstCompo){ if(id == pPro->uuid()){ pBay = pBayPro; break; } } } } if(pBay){ auto lstFrom = pBay->getLstFrom(); auto lstTo = pBay->getLstTo(); QStringList sLstFrom; for(auto& fromId:lstFrom){ BaseProperty* pPro = BasePropertyManager::instance().findEntityData(fromId); if(pPro){ sLstFrom.append(pPro->tag()); } } QStringList sLstTo; for(auto& toId:lstTo){ BaseProperty* pPro = BasePropertyManager::instance().findEntityData(toId); if(pPro){ sLstTo.append(pPro->tag()); } } ui->le_bayName->setText(pBay->tag()); ui->le_from->setText(sLstFrom.join("、")); ui->le_to->setText(sLstTo.join("、")); } } } void BaseInfoDlg::onIconManagerClicked() { if(_parentDlg){ _parentDlg->getModelController()->showProjectIconSettingDlg(_parentDlg->getCurItem()); } }