#include #include "diagramEditor/diagramEditorBaySettingDlg.h" #include "diagramEditor/diagramEditorWizard.h" #include "diagramEditor/diagramEditorBaseBlock.h" #include "ui_diagramEditorBaySettingDlg.h" #include "diagramEditor/diagramEditorStructContainer.h" #include "diagramEditor/wizardBayContentDlg.h" DiagramEditorBaySettingDlg::DiagramEditorBaySettingDlg(QWidget *parent) : QDialog(parent) , ui(new Ui::diagramEditorBaySettingDlg) ,_curOperateBlock(nullptr) { ui->setupUi(this); this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); this->setWindowModality(Qt::WindowModal); initial(); } DiagramEditorBaySettingDlg::~DiagramEditorBaySettingDlg() { delete ui; } void DiagramEditorBaySettingDlg::showDlg(int nLevel) { _curModel = 0; show(); addNewBay(); if(_pWizard){ auto mapBus = _pWizard->getMapBusInfo(); double d = mapBus.value(nLevel).dVoltage; ui->le_name->setText(QString::number(d)+"kV"); ui->cb_level->setCurrentIndex(nLevel); } _curLevel = nLevel; } void DiagramEditorBaySettingDlg::showDlg(int nLevel,DiagramEditorBayBlock* p) { _curModel = 1; if(_curOperateBlock == nullptr) _curOperateBlock = p; show(); addNewBay(); if(_pWizard){ ui->le_name->setText(p->getName()); ui->cb_level->setCurrentIndex(nLevel); if(p){ auto lstCon = p->getConnect(); QStringList lst; for(auto& conId:lstCon){ if(_pWizard->getConnection().contains(conId)){ auto con = _pWizard->getConnection().value(conId); QString sOpposite = con.getOpposite(p->getName()).sName; lst.append(sOpposite); } } ui->listWidget->addItems(lst); } } _curLevel = nLevel; } void DiagramEditorBaySettingDlg::addNewBay() { ui->cb_type->setCurrentIndex(0); ui->cb_level->clear(); ui->cb_target->clear(); ui->listWidget->clear(); if(_pWizard){ auto mapAllCon = _pWizard->getContainerStruct(); for(auto iter = mapAllCon.begin();iter != mapAllCon.end();++iter){ if(iter.key() == g_transformerLevel) continue; ui->cb_level->addItem("第"+QString::number(iter.key()+1)+"层",iter.key()); } } } void DiagramEditorBaySettingDlg::initial() { _curModel = 0; _curLevel = 0; connect(ui->btn_add,&QPushButton::clicked,this,&DiagramEditorBaySettingDlg::onAddClicked); connect(ui->btn_delete,&QPushButton::clicked,this,&DiagramEditorBaySettingDlg::onDeleteClicked); connect(ui->btn_ok,&QPushButton::clicked,this,&DiagramEditorBaySettingDlg::onOkClicked); connect(ui->btn_cancel,&QPushButton::clicked,this,&DiagramEditorBaySettingDlg::onCancelClicked); connect(ui->cb_level,&QComboBox::currentTextChanged,this,&DiagramEditorBaySettingDlg::onConnectLevelChanged); } void DiagramEditorBaySettingDlg::onAddClicked() { //auto pItem = ui->listWidget->currentItem(); QString str = ui->cb_target->currentText(); auto lst = ui->listWidget->findItems(str,Qt::MatchExactly); if(lst.size() == 0){ //为空才添加 ui->listWidget->addItem(str); } } void DiagramEditorBaySettingDlg::onDeleteClicked() { int n = ui->listWidget->currentRow(); if(n){ auto pItem = ui->listWidget->takeItem(n); delete pItem; } } void DiagramEditorBaySettingDlg::onOkClicked() { QString sName = ui->le_name->text(); BayType nType = BayType(ui->cb_type->currentIndex()); if(_curModel == 0){ if(_pWizard){ auto map = _pWizard->getMapBusInfo(); for(auto iter = map.begin();iter != map.end();++iter){ auto lstBlock = _pWizard->getTargetLevelBlocks(iter.key(),2); for(auto bay:lstBlock) { if(bay->getName() == sName){ //判断间隔存在 QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"间隔名已存在")); return; } } } QStringList lst; for(int i = 0;i < ui->listWidget->count();++i){ lst.append(ui->listWidget->item(i)->text()); } DiagramEditorWizardBayInfo info; info.sName = sName; info.nType = nType; info.lstBindObj = lst; _pWizard->onAddBayFinished(info); } } else if(_curModel == 1){ if(_curOperateBlock){ _curOperateBlock->setName(sName); _curOperateBlock->setBayType(nType); _curOperateBlock->clearConnect(); for(int i = 0;i < ui->listWidget->count();++i){ QUuid uid = _pWizard->addConnection(_curOperateBlock->getName(),ui->listWidget->item(i)->text(),2,1); _curOperateBlock->addConnect(uid); } auto pContent = _pWizard->getContentDlg(); pContent->flushData(_curLevel); _curOperateBlock = nullptr; } } hide(); } void DiagramEditorBaySettingDlg::onCancelClicked() { hide(); if(_curOperateBlock) _curOperateBlock = nullptr; } void DiagramEditorBaySettingDlg::onConnectLevelChanged(const QString& str) { if(_pWizard){ int n = ui->cb_level->findText(str); if(n != -1){ ui->cb_target->clear(); int nIndex = ui->cb_level->itemData(n).toInt(); auto lstBlock = _pWizard->getTargetLevelBlocks(nIndex,1); for(auto& block:lstBlock){ ui->cb_target->addItem(block->getName()); } } } }