147 lines
4.5 KiB
C++
147 lines
4.5 KiB
C++
#include "customHMIGenerateDlg.h"
|
|
#include "dataBase.h"
|
|
#include "selectPanel.h"
|
|
#include "powerEntity.h"
|
|
#include "diagramCavas.h"
|
|
#include "customHMIList.h"
|
|
#include "ui_customHMIGenerateDlg.h"
|
|
#include "diagramCavas_p.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);
|
|
setWindowModality(Qt::ApplicationModal);
|
|
_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);
|
|
|
|
m_timer = new QTimer(this);
|
|
m_timer->setSingleShot(true);
|
|
connect(m_timer, &QTimer::timeout, ui->label_info, &QLabel::hide);
|
|
}
|
|
|
|
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(); //先清空
|
|
_pPreviewPanel->getModelController()->clearCurItems();
|
|
QJsonObject context = db->getHMIContextByTag(sSys);
|
|
_pOperatePanel->loadNodes(context);
|
|
_pOperatePanel->centerOnTopLeft();
|
|
}
|
|
|
|
void CustomHMIGenerateDlg::onGenerateClicked()
|
|
{
|
|
auto lstHMI = DataBase::GetInstance()->getAllHMI();
|
|
QString sName = ui->le_hmiName->text();
|
|
|
|
if(sName.isEmpty()){
|
|
showInfoTip("名称不能为空");
|
|
return;
|
|
}
|
|
if(_pCavasPtr->m_mapMonitorPanel.contains(sName)){
|
|
showInfoTip("名称已存在");
|
|
return;
|
|
}
|
|
for(auto& info:lstHMI){
|
|
if(sName == info.name || sName == info.tag)
|
|
{
|
|
showInfoTip("名称已存在");
|
|
return ;
|
|
}
|
|
}
|
|
|
|
int nWidth = 0;
|
|
int nHeight = 0;
|
|
QStringList lstSize = ui->cb_size->currentText().split("*");
|
|
if(lstSize.size() == 2){
|
|
nWidth = lstSize.first().toInt();
|
|
nHeight = lstSize.last().toInt();
|
|
}
|
|
|
|
if(_tempLst.size() > 0){
|
|
QObject::connect(_pOperatePanel->getModelController(), &FixedPortsModel::updateTopologyItems, _pCanvas,&DiagramCavas::onSignal_updateTopology);
|
|
_pOperatePanel->getModelController()->customGenerateHMI(ui->le_hmiName->text(),qMakePair(nWidth,nHeight),_tempLst);
|
|
hide();
|
|
}
|
|
else{
|
|
showInfoTip("未选中生成对象");
|
|
}
|
|
}
|
|
|
|
void CustomHMIGenerateDlg::onBackClicked()
|
|
{
|
|
emit backCreateHMI();
|
|
hide();
|
|
}
|
|
|
|
void CustomHMIGenerateDlg::onPreviewHMI(QList<HierarchyItem> lst)
|
|
{
|
|
_pPreviewPanel->clearItems();
|
|
_pOperatePanel->getModelController()->previewHMI(_pPreviewPanel,lst);
|
|
_pPreviewPanel->moveItemsAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
|
|
_tempLst = lst;
|
|
}
|
|
|
|
void CustomHMIGenerateDlg::showInfoTip(const QString& text,int durationMs)
|
|
{
|
|
ui->label_info->setText(text);
|
|
ui->label_info->show();
|
|
|
|
// 停止之前的定时器
|
|
m_timer->stop();
|
|
// 重新启动定时器
|
|
m_timer->start(durationMs);
|
|
}
|