aicomparewidget.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "aicomparewidget.h"
  2. #include "ui_aicomparewidget.h"
  3. #include <QIntValidator>
  4. #include "UIStyleManager.h"
  5. #include "SystemConfig.h"
  6. #include "FromWebAPI.h"
  7. AICompareWidget::AICompareWidget(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::AICompareWidget)
  10. {
  11. ui->setupUi(this);
  12. m_logger = spdlog::get("ACASetting");
  13. if(m_logger == nullptr)
  14. {
  15. fmt::print("AICompareWidget: Logger ACAServer not found\n");
  16. return;
  17. }
  18. /* 设置 lineEdit_length 只能输入数字 */
  19. ui->lineEdit_length->setValidator(new QIntValidator(1, 120, this));
  20. /* 隐藏AI对比目录,不需要了 */
  21. ui->lineEdit_dir->hide();
  22. ui->label_2->hide();
  23. /* 设置初始化的参数 */
  24. do_pBtn_restore_clicked();
  25. /* 连接信号和槽 */
  26. connect(ui->pBtn_restore, &QPushButton::clicked, this, &AICompareWidget::do_pBtn_restore_clicked);
  27. /* 设置样式 */
  28. UIStyle.registerWidget(this);
  29. }
  30. AICompareWidget::~AICompareWidget()
  31. {
  32. UIStyle.unregisterWidget(this);
  33. delete ui;
  34. }
  35. /* 保存配置项 */
  36. bool AICompareWidget::saveConfig()
  37. {
  38. AICompareConfig_t aiConfig;
  39. aiConfig.nAiComputeDuration = ui->lineEdit_length->text().toInt();
  40. aiConfig.strAiCompareDir = ui->lineEdit_dir->text();
  41. /* 和历史数据进行对比 */
  42. const AICompareConfig_t &oldConfig = SysConfig.getAICompareConfig();
  43. if(aiConfig == oldConfig)
  44. {
  45. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置没有变化,不需要更新");
  46. return true;
  47. }
  48. /* 将AI对比配置转换成json */
  49. std::string strJson;
  50. if(!SysConfig.setAICompareConfigToJson(aiConfig, strJson))
  51. {
  52. SPDLOG_LOGGER_ERROR(m_logger, "设置AI对比配置转换成JSON失败");
  53. return false;
  54. }
  55. /* 更新数据库信息 */
  56. if(!m_fromWebAPI->updateSystemConfig(Config_CompareAI, strJson, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_CompareAI]))
  57. {
  58. SPDLOG_LOGGER_ERROR(m_logger, "更新AI对比配置失败");
  59. return false;
  60. }
  61. /* 更新系统设置 */
  62. SysConfig.setAICompareConfig(aiConfig);
  63. SPDLOG_LOGGER_DEBUG(m_logger, "AI对比配置更新成功");
  64. return true;
  65. }
  66. /* 恢复配置项 */
  67. void AICompareWidget::do_pBtn_restore_clicked()
  68. {
  69. const AICompareConfig_t &aiConfig = SysConfig.getAICompareConfig();
  70. ui->lineEdit_length->setText(QString::number(aiConfig.nAiComputeDuration));
  71. ui->lineEdit_dir->setText(aiConfig.strAiCompareDir);
  72. }