#include "noisewidget.h" #include "ui_noisewidget.h" #include "noisemonitorparamdialog.h" #include #include "UIStyleManager.h" #include "SystemConfig.h" #include "FromWebAPI.h" NoiseWidget::NoiseWidget(QWidget *parent) : QWidget(parent), ui(new Ui::NoiseWidget) { ui->setupUi(this); m_logger = spdlog::get("ACASetting"); if(m_logger == nullptr) { fmt::print("NoiseWidget: Logger ACASetting not found\n"); return; } /* 隐藏不需要的输入栏 */ /* 噪音服务地址 */ ui->lineEdit_serverAddr->hide(); ui->label_5->hide(); /* 噪音文件目录 */ ui->lineEdit_noiseFileDir->hide(); ui->label_2->hide(); /* 服务程序路径 */ ui->lineEdit_serverPath->hide(); ui->label_3->hide(); /* 设置输入数字的栏只能输入数字 */ ui->lineEdit_detectInternal->setValidator(new QIntValidator(this)); /* 设置初始参数 */ do_pBtn_restore_clicked(); /* 获取噪音检测参数 */ m_noiseDetectParam = SysConfig.getNoiseDetectParam(); /* 连接信号和槽 */ connect(ui->pBtn_editNoiseParam, &QPushButton::clicked, this, &NoiseWidget::do_pBtn_editNoiseParam_clicked); connect(ui->pBtn_restore, &QPushButton::clicked, this, &NoiseWidget::do_pBtn_restore_clicked); UIStyle.registerWidget(this); } NoiseWidget::~NoiseWidget() { UIStyle.unregisterWidget(this); delete ui; } void NoiseWidget::do_pBtn_editNoiseParam_clicked() { NoiseMonitorParamDialog dlg; /* 设置当前参数 */ dlg.setInitialParams(m_noiseDetectParam); /* 执行对话框 */ dlg.exec(); /* 判断是否点击了OK */ if(!dlg.isOK()) { return; } /* 获取当前参数 */ m_noiseDetectParam = dlg.getCurrentParams(); } /* 恢复配置项 */ void NoiseWidget::do_pBtn_restore_clicked() { const NoiseDetectBaseConfig_t &noiseConfig = SysConfig.getNoiseDetectBaseConfig(); ui->lineEdit_serverAddr->setText(noiseConfig.strNoiseServerAddr); ui->lineEdit_noiseFileDir->setText(noiseConfig.strNoiseDetectDir); ui->lineEdit_serverPath->setText(noiseConfig.strServerPath); ui->lineEdit_serverPath->setText(noiseConfig.strServerPath); ui->lineEdit_detectInternal->setText(QString::number(noiseConfig.nNoiseDetectDuration)); ui->checkBox_enableNoiseDetect->setChecked(noiseConfig.isEnableNoiseDetect); ui->checkBox_mainRoadEnable->setChecked(noiseConfig.isEnableMainRoadDetect); } /* 保存参数 */ bool NoiseWidget::saveConfig() { bool isSuccess = true; /* 先保存基础设置 */ if(!saveBaseConfig()) { isSuccess = false; return false; } /* 再保存噪音检测参数 */ if(!saveNoiseDetectParam()) { isSuccess = false; return false; } return isSuccess; } /* 保存基础参数 */ bool NoiseWidget::saveBaseConfig() { NoiseDetectBaseConfig_t noiseConfig; noiseConfig.strNoiseServerAddr = ui->lineEdit_serverAddr->text(); noiseConfig.strNoiseDetectDir = ui->lineEdit_noiseFileDir->text(); noiseConfig.strServerPath = ui->lineEdit_serverPath->text(); noiseConfig.nNoiseDetectDuration = ui->lineEdit_detectInternal->text().toInt(); noiseConfig.isEnableNoiseDetect = ui->checkBox_enableNoiseDetect->isChecked(); noiseConfig.isEnableMainRoadDetect = ui->checkBox_mainRoadEnable->isChecked(); /* 和历史数据进行对比 */ const NoiseDetectBaseConfig_t &oldConfig = SysConfig.getNoiseDetectBaseConfig(); if(noiseConfig == oldConfig) { SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测基础配置没有变化,不需要更新"); return true; } /* 将噪音检测基础配置转换成json */ std::string strJson; if(!SysConfig.setNoiseDetectBaseConfigToJson(noiseConfig, strJson)) { SPDLOG_LOGGER_ERROR(m_logger, "设置噪音检测基础配置转换成JSON失败"); return false; } /* 更新数据库信息 */ if(!m_fromWebAPI->updateSystemConfig(Config_NoiseBase, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_NoiseBase])) { SPDLOG_LOGGER_ERROR(m_logger, "更新噪音检测基础配置失败"); return false; } SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测基础配置更新成功"); return true; } /* 保存噪音检测参数 */ bool NoiseWidget::saveNoiseDetectParam() { /* 和历史数据进行对比 */ const NoiseDetectParam_t &oldParam = SysConfig.getNoiseDetectParam(); if(m_noiseDetectParam == oldParam) { SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测参数没有变化,不需要更新"); return true; } /* 将噪音检测参数转换成json */ std::string strJson; if(!SysConfig.setNoiseDetectParamToJson(m_noiseDetectParam, strJson)) { SPDLOG_LOGGER_ERROR(m_logger, "设置噪音检测参数转换成JSON失败"); return false; } /* 更新数据库信息 */ if(!m_fromWebAPI->updateSystemConfig(Config_NoiseParam, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_NoiseParam])) { SPDLOG_LOGGER_ERROR(m_logger, "更新噪音检测参数失败"); return false; } /* 更新系统配置 */ SysConfig.setNoiseDetectParam(m_noiseDetectParam); SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测参数更新成功"); return true; }