checkperiodwidget.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "checkperiodwidget.h"
  2. #include "ui_checkperiodwidget.h"
  3. #include "addperioddialog.h"
  4. #include "UIStyleManager.h"
  5. #include "customcombobox.h"
  6. #include <QFile>
  7. #include <QListWIdgetItem>
  8. CheckPeriodWidget::CheckPeriodWidget(QWidget *parent) :
  9. QWidget(parent),
  10. ui(new Ui::CheckPeriodWidget)
  11. {
  12. ui->setupUi(this);
  13. m_logger = spdlog::get("ACASetting");
  14. if(m_logger == nullptr)
  15. {
  16. fmt::print("CheckPeriodWidget: Logger ACASetting not found\n");
  17. return;
  18. }
  19. /* 下拉框设置阴影 */
  20. ui->comboBox_selectCompareItem->setViewShadowEffect();
  21. connect(ui->pBtn_addDetectPlan, &QPushButton::clicked, this, &CheckPeriodWidget::do_pBtn_addDetectPlan_clicked);
  22. connect(ui->pBtn_addNoDetectPlan, &QPushButton::clicked, this, &CheckPeriodWidget::do_pBtn_addNoDetectPlan_clicked);
  23. /* 设置UI */
  24. UIStyle.registerWidget(this);
  25. QString qssPath = UIStyle.getQSSPath() + "/onedetectplan.qss";
  26. QFile file(qssPath);
  27. if(file.open(QFile::ReadOnly))
  28. {
  29. m_qssPlan = file.readAll();
  30. file.close();
  31. } else
  32. {
  33. SPDLOG_LOGGER_WARN(m_logger, "打开QSS文件失败: {}", qssPath.toStdString());
  34. }
  35. /* 初始化列表 */
  36. initListWidget();
  37. }
  38. CheckPeriodWidget::~CheckPeriodWidget()
  39. {
  40. UIStyle.unregisterWidget(this);
  41. delete ui;
  42. }
  43. /* 获取计划列表 */
  44. QList<OnePlan_t> CheckPeriodWidget::getDetectPlanList()
  45. {
  46. m_planList.clear();
  47. for(int i = 0; i < ui->listWidget_detectPlan->count(); ++i)
  48. {
  49. QListWidgetItem *item = ui->listWidget_detectPlan->item(i);
  50. OneDetectPlan *detectPlan = qobject_cast<OneDetectPlan*>(ui->listWidget_detectPlan->itemWidget(item));
  51. if(detectPlan)
  52. {
  53. m_planList.append(detectPlan->getPlan());
  54. }
  55. }
  56. return m_planList;
  57. }
  58. /* 设置计划列表 */
  59. void CheckPeriodWidget::setDetectPlanList(const QList<OnePlan_t>& planList)
  60. {
  61. m_planList = planList;
  62. ui->listWidget_detectPlan->clear();
  63. for(const auto& plan : m_planList)
  64. {
  65. addDetectPlan(plan);
  66. }
  67. }
  68. /* 添加一个检测计划 */
  69. void CheckPeriodWidget::do_pBtn_addDetectPlan_clicked()
  70. {
  71. AddPeriodDialog dlg(PERIOD_WEEK);
  72. /* 更新计划列表 */
  73. getDetectPlanList();
  74. /* 设置计划列表 */
  75. dlg.setPlanList(m_planList);
  76. dlg.exec();
  77. if(!dlg.isOK())
  78. {
  79. return;
  80. }
  81. OnePlan_t plan = dlg.getPlan();
  82. addDetectPlan(plan);
  83. }
  84. /* 添加一个不检测计划 */
  85. void CheckPeriodWidget::do_pBtn_addNoDetectPlan_clicked()
  86. {
  87. AddPeriodDialog dlg(PERIOD_DATE);
  88. dlg.exec();
  89. }
  90. /* 删除一个检测计划 */
  91. void CheckPeriodWidget::do_pBtn_deleteDetectPlan_clicked()
  92. {
  93. }
  94. /* 删除一个不检测计划 */
  95. void CheckPeriodWidget::do_pBtn_deleteNoDetectPlan_clicked()
  96. {
  97. }
  98. /* 初始化QListWidget */
  99. void CheckPeriodWidget::initListWidget()
  100. {
  101. ui->listWidget_detectPlan->clear();
  102. ui->listWidget_noDetectPlan->clear();
  103. /* 禁用横向滚动条 */
  104. ui->listWidget_detectPlan->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  105. ui->listWidget_noDetectPlan->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  106. /* 设置行间距为16 */
  107. ui->listWidget_detectPlan->setSpacing(8);
  108. ui->listWidget_noDetectPlan->setSpacing(8);
  109. /* 添加检测计划 */
  110. // for (int i = 0; i < 8; ++i) {
  111. // OnePlan_t plan;
  112. // addDetectPlan(plan);
  113. // }
  114. }
  115. /* 添加一个检测计划 */
  116. void CheckPeriodWidget::addDetectPlan(const OnePlan_t& plan)
  117. {
  118. OneDetectPlan *detectPlan = new OneDetectPlan(ui->listWidget_detectPlan);
  119. detectPlan->setQSS(m_qssPlan);
  120. detectPlan->setPlan(plan);
  121. connect(detectPlan, &OneDetectPlan::signal_oneDetectPlanCloseClicked,
  122. this, &CheckPeriodWidget::do_pBtn_deleteDetectPlan_clicked);
  123. /* 将数据插入到列表中 */
  124. QListWidgetItem *item = new QListWidgetItem(ui->listWidget_detectPlan);
  125. item->setSizeHint(detectPlan->sizeHint());
  126. ui->listWidget_detectPlan->setItemWidget(item, detectPlan);
  127. }