databasewidget.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "databasewidget.h"
  2. #include "ui_databasewidget.h"
  3. #include "SystemConfig.h"
  4. #include "UIStyleManager.h"
  5. #include "FromWebAPI.h"
  6. #include <QIntValidator>
  7. DatabaseWidget::DatabaseWidget(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::DatabaseWidget)
  10. {
  11. ui->setupUi(this);
  12. m_logger = spdlog::get("ACASetting");
  13. if(m_logger == nullptr)
  14. {
  15. fmt::print("DatabaseWidget: Logger ACASetting not found\n");
  16. return;
  17. }
  18. /* 限制输入栏输入格式 */
  19. ui->lineEdit_recordLogRetain->setValidator(new QIntValidator(1, 360, this));
  20. ui->lineEdit_recordLogRetain->setPlaceholderText("请输入, 限制1-360天");
  21. ui->lineEdit_alarmLogRetain->setValidator(new QIntValidator(1, 360, this));
  22. ui->lineEdit_alarmLogRetain->setPlaceholderText("请输入, 限制1-360天");
  23. ui->lineEdit_operatorLogRetain->setValidator(new QIntValidator(1, 360, this));
  24. ui->lineEdit_operatorLogRetain->setPlaceholderText("请输入, 限制1-360天");
  25. ui->lineEdit_recordFileRetain->setValidator(new QIntValidator(1, 24, this));
  26. ui->lineEdit_recordFileRetain->setPlaceholderText("请输入, 限制1-24小时");
  27. ui->lineEdit_alarmFileRetain->setValidator(new QIntValidator(1, 360, this));
  28. ui->lineEdit_alarmFileRetain->setPlaceholderText("请输入, 限制1-360天");
  29. ui->lineEdit_listenPort->setValidator(new QIntValidator(1, 65535, this));
  30. ui->lineEdit_listenPort->setPlaceholderText("请输入");
  31. ui->lineEdit_recordFilePath->setPlaceholderText("请输入,服务端录音文件存储路径");
  32. ui->lineEdit_ftpPath->setPlaceholderText("请输入,FTP文件路径");
  33. /* 设置密码行隐藏 */
  34. ui->lineEdit_ftpPasswd->setEchoMode(QLineEdit::Password);
  35. /* 获取初始配置 */
  36. do_pBtn_restore_clicked();
  37. /* 连接信号和槽 */
  38. connect(ui->pBtn_restore, &QPushButton::clicked, this, &DatabaseWidget::do_pBtn_restore_clicked);
  39. UIStyle.registerWidget(this);
  40. }
  41. DatabaseWidget::~DatabaseWidget()
  42. {
  43. UIStyle.unregisterWidget(this);
  44. delete ui;
  45. }
  46. /* 保存参数 */
  47. bool DatabaseWidget::saveParams()
  48. {
  49. if(!isDataChanged())
  50. {
  51. return true;
  52. }
  53. /* 生成json文件 */
  54. std::string jsonStr;
  55. if(!SysConfig.setDatabaseConfigToJson(m_databaseConfig, jsonStr))
  56. {
  57. SPDLOG_LOGGER_ERROR(m_logger, "数据库配置转换成json失败");
  58. return false;
  59. }
  60. /* 写入到数据库 */
  61. if(!m_fromWebAPI->updateSystemConfig(Config_Database, jsonStr, SysConfig.mapSysConfigDesc[eSystemConfigType::eSCT_Database]))
  62. {
  63. SPDLOG_LOGGER_ERROR(m_logger, "更新数据库配置失败");
  64. return false;
  65. }
  66. /* 设置数据库配置 */
  67. SysConfig.setDatabaseConfig(m_databaseConfig);
  68. SPDLOG_LOGGER_DEBUG(m_logger, "数据库配置信息保存成功");
  69. return true;
  70. }
  71. /* 获取数据是否改变了 */
  72. bool DatabaseWidget::isDataChanged()
  73. {
  74. m_databaseConfig.nRecordLogRetain = ui->lineEdit_recordLogRetain->text().toInt();
  75. m_databaseConfig.nAlarmLogRetain = ui->lineEdit_alarmLogRetain->text().toInt();
  76. m_databaseConfig.nOperatorLogRetain = ui->lineEdit_operatorLogRetain->text().toInt();
  77. m_databaseConfig.nRecordFileRetain = ui->lineEdit_recordFileRetain->text().toInt();
  78. m_databaseConfig.nAlarmFileRetain = ui->lineEdit_alarmFileRetain->text().toInt();
  79. m_databaseConfig.nListenPort = ui->lineEdit_listenPort->text().toInt();
  80. m_databaseConfig.strRecordFilePath = ui->lineEdit_recordFilePath->text();
  81. m_databaseConfig.strFtpPath = ui->lineEdit_ftpPath->text();
  82. m_databaseConfig.strFtpUser = ui->lineEdit_ftpUser->text();
  83. m_databaseConfig.strFtpPassword = ui->lineEdit_ftpPasswd->text();
  84. /* 和旧数据对比 */
  85. const DatabaseConfig_t& oldConfig = SysConfig.getDatabaseConfig();
  86. if(m_databaseConfig == oldConfig)
  87. {
  88. SPDLOG_LOGGER_DEBUG(m_logger, "数据库配置信息没有修改");
  89. return false;
  90. }
  91. return true;
  92. }
  93. /* 恢复配置项 */
  94. void DatabaseWidget::do_pBtn_restore_clicked()
  95. {
  96. m_databaseConfig = SysConfig.getDatabaseConfig();
  97. ui->lineEdit_recordLogRetain->setText(QString::number(m_databaseConfig.nRecordLogRetain));
  98. ui->lineEdit_operatorLogRetain->setText(QString::number(m_databaseConfig.nOperatorLogRetain));
  99. ui->lineEdit_recordFileRetain->setText(QString::number(m_databaseConfig.nRecordFileRetain));
  100. ui->lineEdit_alarmLogRetain->setText(QString::number(m_databaseConfig.nAlarmLogRetain));
  101. ui->lineEdit_alarmFileRetain->setText(QString::number(m_databaseConfig.nAlarmFileRetain));
  102. ui->lineEdit_listenPort->setText(QString::number(m_databaseConfig.nListenPort));
  103. ui->lineEdit_recordFilePath->setText(m_databaseConfig.strRecordFilePath);
  104. ui->lineEdit_ftpPath->setText(m_databaseConfig.strFtpPath);
  105. ui->lineEdit_ftpUser->setText(m_databaseConfig.strFtpUser);
  106. ui->lineEdit_ftpPasswd->setText(m_databaseConfig.strFtpPassword);
  107. }