GridFrame/diagramCavas/source/bayManagerDlg.cpp

113 lines
2.8 KiB
C++

#include "bayManagerDlg.h"
#include "bayManagerContentDlg.h"
#include "graphicsItem/electricBayItem.h"
#include "graphicsDataModel/fixedPortsModel.h"
#include "ui_bayManagerDlg.h"
#include "titleBar.h"
#include <QSizeGrip>
BayManagerDlg::BayManagerDlg(QWidget *parent)
: QDialog(parent)
, ui(new Ui::bayManagerDlg)
,_modelController(nullptr)
,_pSizeGrip(nullptr)
{
ui->setupUi(this);
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
initial();
}
BayManagerDlg::~BayManagerDlg()
{
delete ui;
}
void BayManagerDlg::initial()
{
m_titleBar = new TitleBar(this);
m_titleBar->setTitle("间隔管理");
ui->verticalLayout_2->insertWidget(0,m_titleBar);
_pSizeGrip = new QSizeGrip(this);
_pSizeGrip->setFixedSize(12, 12);
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->name());
pItem->setData(Qt::UserRole+1,index);
ui->listWidget->addItem(pItem);
}
if(ui->stackedWidget->count() != 0)
ui->stackedWidget->setCurrentIndex(0);
}
void BayManagerDlg::resizeEvent(QResizeEvent *) {
_pSizeGrip->move(width() - _pSizeGrip->width(),
height() - _pSizeGrip->height());
}