DiagramDesigner/diagramCavas/source/bayManagerDlg.cpp

99 lines
2.4 KiB
C++
Raw Normal View History

2025-07-04 18:47:49 +08:00
#include "bayManagerDlg.h"
#include "bayManagerContentDlg.h"
2025-07-11 18:13:54 +08:00
#include "graphicsItem/electricBayItem.h"
#include "graphicsDataModel/fixedPortsModel.h"
2025-07-04 18:47:49 +08:00
#include "ui_bayManagerDlg.h"
BayManagerDlg::BayManagerDlg(QWidget *parent)
: QDialog(parent)
, ui(new Ui::bayManagerDlg)
2025-07-11 18:13:54 +08:00
,_modelController(nullptr)
2025-07-04 18:47:49 +08:00
{
ui->setupUi(this);
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
initial();
}
BayManagerDlg::~BayManagerDlg()
{
delete ui;
}
void BayManagerDlg::initial()
{
connect(ui->btn_ok,&QPushButton::clicked,this,&BayManagerDlg::onOkClicked);
connect(ui->btn_cancel,&QPushButton::clicked,this,&BayManagerDlg::onCancelClicked);
2025-07-11 18:13:54 +08:00
connect(ui->listWidget,&QListWidget::itemClicked,this,&BayManagerDlg::onListItemClicked);
2025-07-04 18:47:49 +08:00
}
void BayManagerDlg::showDlg()
{
2025-07-11 18:13:54 +08:00
show();
clearData();
initData();
}
void BayManagerDlg::initData()
{
QList<BayProperty*> lstBay;
QMap<QUuid,ElectricBayItem*> mapBay = _modelController->allBayItem(); //获取当前图中所有bay
for(auto& item:mapBay){
AbstractProperty* p = item->getProperty();
BayProperty* pBayPro = dynamic_cast<BayProperty*>(p);
if(pBayPro){
lstBay.append(pBayPro);
}
}
2025-07-04 18:47:49 +08:00
2025-07-11 18:13:54 +08:00
generatePage(lstBay);
2025-07-04 18:47:49 +08:00
}
void BayManagerDlg::clearData()
{
ui->listWidget->clear();
for(auto& page:_contentData)
{
ui->stackedWidget->removeWidget(page);
}
qDeleteAll(_contentData);
_contentData.clear();
}
void BayManagerDlg::onOkClicked()
{
hide();
2025-07-11 18:13:54 +08:00
for(auto& pDlg:_contentData){
if(pDlg){
pDlg->saveSetting();
}
}
2025-07-04 18:47:49 +08:00
}
void BayManagerDlg::onCancelClicked()
{
hide();
}
2025-07-11 18:13:54 +08:00
void BayManagerDlg::onListItemClicked(QListWidgetItem *item)
{
int index = item->data(Qt::UserRole+1).toInt();
ui->stackedWidget->setCurrentIndex(index);
}
void BayManagerDlg::generatePage(QList<BayProperty*> lstBay)
2025-07-04 18:47:49 +08:00
{
2025-07-11 18:13:54 +08:00
for(auto& pData:lstBay)
2025-07-04 18:47:49 +08:00
{
BayManagerContentDlg* pBay = new BayManagerContentDlg(this);
2025-07-11 18:13:54 +08:00
pBay->setProperty(pData);
pBay->updateByProperty();
2025-07-04 18:47:49 +08:00
int index = ui->stackedWidget->addWidget(pBay);
_contentData.insert(index,pBay);
2025-07-18 18:26:13 +08:00
QListWidgetItem* pItem = new QListWidgetItem(pData->name());
2025-07-11 18:13:54 +08:00
pItem->setData(Qt::UserRole+1,index);
ui->listWidget->addItem(pItem);
2025-07-04 18:47:49 +08:00
}
2025-07-11 18:13:54 +08:00
if(ui->stackedWidget->count() != 0)
ui->stackedWidget->setCurrentIndex(0);
2025-07-04 18:47:49 +08:00
}