setinfowidget.cpp 5.3 KB

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