GrabBag/App/LapWeld/LapWeldApp/dialogalgoarg.cpp

106 lines
3.1 KiB
C++
Raw Normal View History

2025-09-18 23:49:32 +08:00
#include "dialogalgoarg.h"
#include "ui_dialogalgoarg.h"
#include <QMessageBox>
#include <QPushButton>
#include <QtCore/QCoreApplication>
#include <QtCore/QFileInfo>
#include <QtCore/QDir>
#include <QtCore/QStandardPaths>
#include <QtCore/QFile>
#include "PathManager.h"
2025-11-26 22:44:38 +08:00
DialogAlgoarg::DialogAlgoarg(ConfigManager* configManager, QWidget *parent)
2025-09-18 23:49:32 +08:00
: QDialog(parent)
, ui(new Ui::DialogAlgoarg)
2025-11-26 22:44:38 +08:00
, m_pConfigManager(configManager)
2025-09-18 23:49:32 +08:00
{
ui->setupUi(this);
// 隐藏标题栏
setWindowFlags(Qt::FramelessWindowHint);
// 获取配置文件路径
m_configFilePath = PathManager::GetInstance().GetConfigFilePath();
2025-09-18 23:49:32 +08:00
// 从配置文件加载数据到界面
LoadConfigToUI();
}
DialogAlgoarg::~DialogAlgoarg()
{
delete ui;
}
void DialogAlgoarg::LoadConfigToUI()
{
2025-11-26 22:44:38 +08:00
if (!m_pConfigManager) {
2025-09-18 23:49:32 +08:00
return;
}
try {
2025-11-26 22:44:38 +08:00
// 从ConfigManager获取配置数据
ConfigResult configData = m_pConfigManager->GetConfigResult();
2025-09-18 23:49:32 +08:00
// 将激光焊接参数加载到界面控件
2025-11-26 22:44:38 +08:00
const VrLapWeldParam& lapWeldParam = configData.algorithmParams.lapWeldParam;
2025-09-18 23:49:32 +08:00
// 设置参数到界面
ui->lineEdit_lapHeight->setText(QString::number(lapWeldParam.lapHeight));
ui->lineEdit_weldMinLen->setText(QString::number(lapWeldParam.weldMinLen));
ui->lineEdit_weldRefPoints->setText(QString::number(lapWeldParam.weldRefPoints));
// 设置扫描模式下拉框
ui->comboBox_scanMode->setCurrentIndex(static_cast<int>(lapWeldParam.scanMode));
} catch (const std::exception& e) {
QMessageBox::critical(this, "错误", "加载配置文件失败!");
}
}
bool DialogAlgoarg::SaveConfigFromUI()
{
2025-11-26 22:44:38 +08:00
if (!m_pConfigManager) {
2025-09-18 23:49:32 +08:00
return false;
}
try {
2025-11-26 22:44:38 +08:00
// 获取当前配置
SystemConfig systemConfig = m_pConfigManager->GetConfig();
VrLapWeldParam& lapWeldParam = systemConfig.configResult.algorithmParams.lapWeldParam;
2025-09-18 23:49:32 +08:00
// 读取参数
lapWeldParam.lapHeight = ui->lineEdit_lapHeight->text().toDouble();
lapWeldParam.weldMinLen = ui->lineEdit_weldMinLen->text().toDouble();
lapWeldParam.weldRefPoints = ui->lineEdit_weldRefPoints->text().toInt();
// 读取扫描模式
lapWeldParam.scanMode = static_cast<WeldScanMode>(ui->comboBox_scanMode->currentIndex());
2025-11-26 22:44:38 +08:00
// 更新并保存配置到文件
if (!m_pConfigManager->UpdateFullConfig(systemConfig)) {
return false;
}
2025-09-18 23:49:32 +08:00
2025-11-26 22:44:38 +08:00
return m_pConfigManager->SaveConfigToFile(m_configFilePath.toStdString());
2025-09-18 23:49:32 +08:00
} catch (const std::exception& e) {
return false;
}
}
void DialogAlgoarg::on_btn_camer_ok_clicked()
{
if (SaveConfigFromUI()) {
QMessageBox::information(this, "成功", "配置保存成功!");
accept();
} else {
QMessageBox::warning(this, "失败", "配置保存失败,请检查文件权限!");
}
}
void DialogAlgoarg::on_btn_camer_cancel_clicked()
{
// 直接关闭窗口,不保存任何更改
reject();
}