noisewidget.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "noisewidget.h"
  2. #include "ui_noisewidget.h"
  3. #include "noisemonitorparamdialog.h"
  4. #include <QIntValidator>
  5. #include "UIStyleManager.h"
  6. #include "SystemConfig.h"
  7. #include "FromWebAPI.h"
  8. NoiseWidget::NoiseWidget(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::NoiseWidget)
  11. {
  12. ui->setupUi(this);
  13. m_logger = spdlog::get("ACASetting");
  14. if(m_logger == nullptr)
  15. {
  16. fmt::print("NoiseWidget: Logger ACASetting not found\n");
  17. return;
  18. }
  19. /* 设置输入数字的栏只能输入数字 */
  20. ui->lineEdit_detectInternal->setValidator(new QIntValidator(this));
  21. /* 设置初始参数 */
  22. const NoiseDetectBaseConfig_t &noiseConfig = SysConfig.getNoiseDetectBaseConfig();
  23. ui->lineEdit_serverAddr->setText(noiseConfig.strNoiseServerAddr);
  24. ui->lineEdit_noiseFileDir->setText(noiseConfig.strNoiseDetectDir);
  25. ui->lineEdit_serverPath->setText(noiseConfig.strServerPath);
  26. ui->lineEdit_serverPath->setText(noiseConfig.strServerPath);
  27. ui->lineEdit_detectInternal->setText(QString::number(noiseConfig.nNoiseDetectDuration));
  28. ui->checkBox_enableNoiseDetect->setChecked(noiseConfig.isEnableNoiseDetect);
  29. ui->checkBox_mainRoadEnable->setChecked(noiseConfig.isEnableMainRoadDetect);
  30. /* 获取噪音检测参数 */
  31. m_noiseDetectParam = SysConfig.getNoiseDetectParam();
  32. connect(ui->pBtn_editNoiseParam, &QPushButton::clicked, this, &NoiseWidget::do_pBtn_editNoiseParam_clicked);
  33. UIStyle.registerWidget(this);
  34. }
  35. NoiseWidget::~NoiseWidget()
  36. {
  37. UIStyle.unregisterWidget(this);
  38. delete ui;
  39. }
  40. void NoiseWidget::do_pBtn_editNoiseParam_clicked()
  41. {
  42. NoiseMonitorParamDialog dlg;
  43. /* 设置当前参数 */
  44. dlg.setInitialParams(m_noiseDetectParam);
  45. /* 执行对话框 */
  46. dlg.exec();
  47. /* 判断是否点击了OK */
  48. if(!dlg.isOK())
  49. {
  50. return;
  51. }
  52. /* 获取当前参数 */
  53. m_noiseDetectParam = dlg.getCurrentParams();
  54. }
  55. /* 保存参数 */
  56. bool NoiseWidget::saveConfig()
  57. {
  58. bool isSuccess = true;
  59. /* 先保存基础设置 */
  60. if(!saveBaseConfig())
  61. {
  62. isSuccess = false;
  63. return false;
  64. }
  65. /* 再保存噪音检测参数 */
  66. if(!saveNoiseDetectParam())
  67. {
  68. isSuccess = false;
  69. return false;
  70. }
  71. return isSuccess;
  72. }
  73. /* 保存基础参数 */
  74. bool NoiseWidget::saveBaseConfig()
  75. {
  76. NoiseDetectBaseConfig_t noiseConfig;
  77. noiseConfig.strNoiseServerAddr = ui->lineEdit_serverAddr->text();
  78. noiseConfig.strNoiseDetectDir = ui->lineEdit_noiseFileDir->text();
  79. noiseConfig.strServerPath = ui->lineEdit_serverPath->text();
  80. noiseConfig.nNoiseDetectDuration = ui->lineEdit_detectInternal->text().toInt();
  81. noiseConfig.isEnableNoiseDetect = ui->checkBox_enableNoiseDetect->isChecked();
  82. noiseConfig.isEnableMainRoadDetect = ui->checkBox_mainRoadEnable->isChecked();
  83. /* 和历史数据进行对比 */
  84. const NoiseDetectBaseConfig_t &oldConfig = SysConfig.getNoiseDetectBaseConfig();
  85. if(noiseConfig == oldConfig)
  86. {
  87. SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测基础配置没有变化,不需要更新");
  88. return true;
  89. }
  90. /* 将噪音检测基础配置转换成json */
  91. std::string strJson;
  92. if(!SysConfig.setNoiseDetectBaseConfigToJson(noiseConfig, strJson))
  93. {
  94. SPDLOG_LOGGER_ERROR(m_logger, "设置噪音检测基础配置转换成JSON失败");
  95. return false;
  96. }
  97. /* 更新数据库信息 */
  98. if(!m_fromWebAPI->updateSystemConfig(Config_NoiseBase, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_NoiseBase]))
  99. {
  100. SPDLOG_LOGGER_ERROR(m_logger, "更新噪音检测基础配置失败");
  101. return false;
  102. }
  103. return true;
  104. }
  105. /* 保存噪音检测参数 */
  106. bool NoiseWidget::saveNoiseDetectParam()
  107. {
  108. /* 和历史数据进行对比 */
  109. const NoiseDetectParam_t &oldParam = SysConfig.getNoiseDetectParam();
  110. if(m_noiseDetectParam == oldParam)
  111. {
  112. SPDLOG_LOGGER_DEBUG(m_logger, "噪音检测参数没有变化,不需要更新");
  113. return true;
  114. }
  115. /* 将噪音检测参数转换成json */
  116. std::string strJson;
  117. if(!SysConfig.setNoiseDetectParamToJson(m_noiseDetectParam, strJson))
  118. {
  119. SPDLOG_LOGGER_ERROR(m_logger, "设置噪音检测参数转换成JSON失败");
  120. return false;
  121. }
  122. /* 更新数据库信息 */
  123. if(!m_fromWebAPI->updateSystemConfig(Config_NoiseParam, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_NoiseParam]))
  124. {
  125. SPDLOG_LOGGER_ERROR(m_logger, "更新噪音检测参数失败");
  126. return false;
  127. }
  128. /* 更新系统配置 */
  129. SysConfig.setNoiseDetectParam(m_noiseDetectParam);
  130. return true;
  131. }