DiagramDesigner/diagramCavas/source/customHMIGenerateDlg.cpp

92 lines
2.8 KiB
C++
Raw Normal View History

2026-04-24 17:14:45 +08:00
#include "customHMIGenerateDlg.h"
#include "dataBase.h"
#include "selectPanel.h"
#include "powerEntity.h"
#include "diagramCavas.h"
#include "customHMIList.h"
#include "ui_customHMIGenerateDlg.h"
#include <QVBoxLayout>
CustomHMIGenerateDlg::CustomHMIGenerateDlg(QWidget *parent)
: QDialog(parent)
, ui(new Ui::customHMIGenerateDlg)
,_pOperatePanel(nullptr)
,_pPreviewPanel(nullptr)
,_pPe(nullptr)
,_pOe(nullptr)
,_pItemList(nullptr)
{
ui->setupUi(this);
_pCanvas = dynamic_cast<DiagramCavas*>(parent);
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
initial();
}
CustomHMIGenerateDlg::~CustomHMIGenerateDlg()
{
delete ui;
if(_pPe)
delete _pPe;
if(_pOe)
delete _pOe;
}
void CustomHMIGenerateDlg::initial()
{
_pItemList = new CustomHMIList(this);
connect(ui->btn_return,&QPushButton::clicked,this,&CustomHMIGenerateDlg::onBackClicked);
connect(ui->btn_generate,&QPushButton::clicked,this,&CustomHMIGenerateDlg::onGenerateClicked);
QVBoxLayout* layOut = new QVBoxLayout(ui->gb_list);
layOut->addWidget(_pItemList);
_pPe = new ConfigurationDiagram("0","oprerate");
_pOperatePanel = new SelectPanel(_pPe,this,DM_customHMI);
_pOe = new ConfigurationDiagram("1","preview");
_pPreviewPanel = new SelectPanel(_pOe,this,DM_customHMI);
QVBoxLayout *layOperate = new QVBoxLayout(ui->gb_sys);
layOperate->addWidget(_pOperatePanel);
_pOperatePanel->getModelController()->setCavas(QPointer<DiagramCavas>(_pCanvas));
QVBoxLayout *layPreview= new QVBoxLayout(ui->gb_preview);
layPreview->addWidget(_pPreviewPanel);
_pPreviewPanel->getModelController()->setCavas(QPointer<DiagramCavas>(_pCanvas));
connect(_pOperatePanel->getModelController(),&FixedPortsModel::updateCurrentItems,_pItemList,&CustomHMIList::onUpdateItems);
connect(_pOperatePanel->getModelController(),&FixedPortsModel::itemSelected,_pItemList,&CustomHMIList::onSelectItems);
connect(_pItemList,&CustomHMIList::previewHMI,this,&CustomHMIGenerateDlg::onPreviewHMI);
}
void CustomHMIGenerateDlg::showDlg(QString sHmi,QString sSys,int nModel)
{
show();
ui->le_hmiName->setText(sHmi);
DataBase* db = DataBase::GetInstance();
if (!db) {
qWarning() << "Database instance is null";
return;
}
_pOperatePanel->getModelController()->clearCurItems(); //先清空
QJsonObject context = db->getHMIContextByTag(sSys);
_pOperatePanel->loadNodes(context);
}
void CustomHMIGenerateDlg::onGenerateClicked()
{
hide();
}
void CustomHMIGenerateDlg::onBackClicked()
{
emit backCreateHMI();
hide();
}
void CustomHMIGenerateDlg::onPreviewHMI(QList<HierarchyItem> lst)
{
_pPreviewPanel->clearItems();
_pOperatePanel->getModelController()->previewHMI(_pPreviewPanel,lst);
}