DiagramDesigner/diagramCavas/source/bayManagerDlg.cpp

99 lines
2.4 KiB
C++

#include "bayManagerDlg.h"
#include "bayManagerContentDlg.h"
#include "graphicsItem/electricBayItem.h"
#include "graphicsDataModel/fixedPortsModel.h"
#include "ui_bayManagerDlg.h"
BayManagerDlg::BayManagerDlg(QWidget *parent)
: QDialog(parent)
, ui(new Ui::bayManagerDlg)
,_modelController(nullptr)
{
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);
connect(ui->listWidget,&QListWidget::itemClicked,this,&BayManagerDlg::onListItemClicked);
}
void BayManagerDlg::showDlg()
{
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);
}
}
generatePage(lstBay);
}
void BayManagerDlg::clearData()
{
ui->listWidget->clear();
for(auto& page:_contentData)
{
ui->stackedWidget->removeWidget(page);
}
qDeleteAll(_contentData);
_contentData.clear();
}
void BayManagerDlg::onOkClicked()
{
hide();
for(auto& pDlg:_contentData){
if(pDlg){
pDlg->saveSetting();
}
}
}
void BayManagerDlg::onCancelClicked()
{
hide();
}
void BayManagerDlg::onListItemClicked(QListWidgetItem *item)
{
int index = item->data(Qt::UserRole+1).toInt();
ui->stackedWidget->setCurrentIndex(index);
}
void BayManagerDlg::generatePage(QList<BayProperty*> lstBay)
{
for(auto& pData:lstBay)
{
BayManagerContentDlg* pBay = new BayManagerContentDlg(this);
pBay->setProperty(pData);
pBay->updateByProperty();
int index = ui->stackedWidget->addWidget(pBay);
_contentData.insert(index,pBay);
QListWidgetItem* pItem = new QListWidgetItem(pData->tag());
pItem->setData(Qt::UserRole+1,index);
ui->listWidget->addItem(pItem);
}
if(ui->stackedWidget->count() != 0)
ui->stackedWidget->setCurrentIndex(0);
}