123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #include "noisewidget.h"
- #include "ui_noisewidget.h"
- #include "noisemonitorparamdialog.h"
- #include <QIntValidator>
- #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();
- /* 设置输入数字的栏只能输入数字,并限制为整数0-60 */
- ui->lineEdit_detectInternal->setValidator(new QIntValidator(0, 60, this));
- /* 设置输入栏的弱提示符 */
- ui->lineEdit_detectInternal->setPlaceholderText("请输入, 限制0-60秒");
- /* 设置初始参数 */
- 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;
- }
|