setinfowidget.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #include "setinfowidget.h"
  2. #include "CompareItemData.h"
  3. #include "ui_setinfowidget.h"
  4. #include "UIStyleManager.h"
  5. #include "tipwidget.h"
  6. #include "GLobalInfo.h"
  7. SetInfoWidget::SetInfoWidget(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::SetInfoWidget)
  10. {
  11. ui->setupUi(this);
  12. /* 连接信号和槽 */
  13. connect(ui->pBtn_save, &QPushButton::clicked, this, &SetInfoWidget::do_pBtn_save_clicked);
  14. connect(ui->pBtn_cancel, &QPushButton::clicked, this, &SetInfoWidget::do_pBtn_cancel_clicked);
  15. connect(ui->tabWidget, &QTabWidget::currentChanged, this, &SetInfoWidget::do_tabWidget_currentChanged);
  16. /* 设置样式表 */
  17. UIStyle.registerWidget(this);
  18. }
  19. SetInfoWidget::~SetInfoWidget()
  20. {
  21. /* 注销样式表 */
  22. UIStyle.unregisterWidget(this);
  23. delete ui;
  24. }
  25. /* 设置WebAPI */
  26. void SetInfoWidget::setWebAPI(FromWebAPI* api)
  27. {
  28. m_fromWebAPI = api;
  29. /* 设置BasicWidget的WebAPI */
  30. BasicWidget* basicWidget = qobject_cast<BasicWidget*>(ui->tabWidget->widget(0));
  31. if(basicWidget)
  32. {
  33. basicWidget->setWebAPI(m_fromWebAPI);
  34. }
  35. /* 设置ai对比项的webapi指针 */
  36. AICompareWidget* aiCompareWidget = qobject_cast<AICompareWidget*>(ui->tabWidget->widget(1));
  37. if(aiCompareWidget)
  38. {
  39. aiCompareWidget->setWebAPI(m_fromWebAPI);
  40. }
  41. /* 设置噪音检测的webapi */
  42. NoiseWidget* noiseWidget = qobject_cast<NoiseWidget*>(ui->tabWidget->widget(2));
  43. if(noiseWidget)
  44. {
  45. noiseWidget->setWebAPI(m_fromWebAPI);
  46. }
  47. /* 设置数据库配置的WebAPI */
  48. DatabaseWidget* databaseWidget = qobject_cast<DatabaseWidget*>(ui->tabWidget->widget(3));
  49. if(databaseWidget)
  50. {
  51. databaseWidget->setWebAPI(m_fromWebAPI);
  52. }
  53. /* 设置检测时段的WebAPI */
  54. CheckPeriodWidget* checkPeriodWidget = qobject_cast<CheckPeriodWidget*>(ui->tabWidget->widget(4));
  55. if(checkPeriodWidget)
  56. {
  57. checkPeriodWidget->setWebAPI(m_fromWebAPI);
  58. }
  59. }
  60. /* 保存按钮 */
  61. void SetInfoWidget::do_pBtn_save_clicked()
  62. {
  63. saveData();
  64. }
  65. /* 取消按钮 */
  66. void SetInfoWidget::do_pBtn_cancel_clicked()
  67. {
  68. }
  69. /* 切换了页面 */
  70. void SetInfoWidget::do_tabWidget_currentChanged(int index)
  71. {
  72. /* 获取当前页的编号 */
  73. QWidget* currentWidget = ui->tabWidget->currentWidget();
  74. if(currentWidget == nullptr)
  75. {
  76. return;
  77. }
  78. /* 根据当前页的编号执行不同的操作 */
  79. switch(index)
  80. {
  81. case 0: // 基础信息
  82. break;
  83. case 1: // 对比项
  84. break;
  85. case 2: // 噪音检测
  86. break;
  87. case 3: // 数据库
  88. break;
  89. case 4: // 检测时段
  90. {
  91. /* 设置对比项到可选列表中 */
  92. CheckPeriodWidget* checkPeriodWidget = qobject_cast<CheckPeriodWidget*>(currentWidget);
  93. if(checkPeriodWidget)
  94. {
  95. checkPeriodWidget->updateCompareItemList(CIData.getCompareItemList());
  96. }
  97. }
  98. break;
  99. default:
  100. break;
  101. }
  102. }
  103. /* 保存数据 */
  104. void SetInfoWidget::saveData()
  105. {
  106. /* 获取当前页的编号 */
  107. int currentIndex = ui->tabWidget->currentIndex();
  108. QWidget* currentWidget = ui->tabWidget->currentWidget();
  109. bool isSuccess = false;
  110. switch(currentIndex)
  111. {
  112. case 0: /* 基础信息 */
  113. {
  114. BasicWidget* widget = qobject_cast<BasicWidget*>(currentWidget);
  115. if(widget)
  116. {
  117. /* 保存基础信息 */
  118. isSuccess = widget->saveBasicInfo();
  119. }
  120. }
  121. break;
  122. case 1: /* 对比项 */
  123. {
  124. AICompareWidget* widget = qobject_cast<AICompareWidget*>(currentWidget);
  125. if(widget)
  126. {
  127. /* 保存对比项信息 */
  128. isSuccess = widget->saveConfig();
  129. }
  130. }
  131. break;
  132. case 2: /* 噪音检测 */
  133. {
  134. NoiseWidget* widget = qobject_cast<NoiseWidget*>(currentWidget);
  135. if(widget)
  136. {
  137. /* 保存噪音检测信息 */
  138. isSuccess = widget->saveConfig();
  139. }
  140. }
  141. break;
  142. case 3: /* 数据库 */
  143. {
  144. DatabaseWidget* widget = qobject_cast<DatabaseWidget*>(currentWidget);
  145. if(widget)
  146. {
  147. /* 保存数据库信息 */
  148. isSuccess = widget->saveParams();
  149. }
  150. }
  151. break;
  152. case 4: /* 检测时段 */
  153. {
  154. CheckPeriodWidget* widget = qobject_cast<CheckPeriodWidget*>(currentWidget);
  155. if(widget)
  156. {
  157. /* 保存检测时段信息 */
  158. isSuccess = widget->saveSettings();
  159. }
  160. }
  161. break;
  162. default:
  163. break;
  164. }
  165. if(isSuccess)
  166. {
  167. /* 保存成功 */
  168. TipWidget::display(TipWidget::OPERATOR_OK, "设置保存成功", GInfo.getTopWindow());
  169. }else {
  170. /* 保存失败 */
  171. TipWidget::display(TipWidget::OPERATOR_FAIL, "设置保存失败", GInfo.getTopWindow());
  172. }
  173. }