checkperiodwidget.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #ifndef CHECKPERIODWIDGET_H
  2. #define CHECKPERIODWIDGET_H
  3. #include <QWidget>
  4. #include <QVBoxLayout>
  5. #include <qboxlayout.h>
  6. #include <QMap>
  7. #include "spdlog/spdlog.h"
  8. #include "GlobalVariable.h"
  9. #include "onedetectplan.h"
  10. #include "CompareItemData.h"
  11. #include "FromWebAPI.h"
  12. namespace Ui {
  13. class CheckPeriodWidget;
  14. }
  15. /**
  16. * @brief 检测周期设置界面
  17. *
  18. * 该界面用于设置检测周期,包括添加检测计划和不检测计划
  19. */
  20. class CheckPeriodWidget : public QWidget
  21. {
  22. Q_OBJECT
  23. public:
  24. explicit CheckPeriodWidget(QWidget *parent = nullptr);
  25. ~CheckPeriodWidget();
  26. /* 更新可选的对比项列表 */
  27. void updateCompareItemList(const QList<CompareItemInfo_t>& compareItemList);
  28. /* 保存设置 */
  29. bool saveSettings();
  30. /* 设置WebAPI指针 */
  31. void setWebAPI(FromWebAPI* api) { m_fromWebAPI = api; }
  32. private slots:
  33. /* 选择了一个对比项 */
  34. void do_comboBox_selectCompareItem_currentIndexChanged(int index);
  35. /* 添加一个检测计划 */
  36. void do_pBtn_addDetectPlan_clicked();
  37. /* 添加一个不检测计划 */
  38. void do_pBtn_addNoDetectPlan_clicked();
  39. /* 删除一个检测计划 */
  40. void do_pBtn_deleteDetectPlan_clicked();
  41. /* 删除一个不检测计划 */
  42. void do_pBtn_deleteNoDetectPlan_clicked();
  43. /* 修改了日期或周几,检测是否冲突 */
  44. void do_detectPlanModifiedWeek(OnePlan_t formerPlan, OnePlan_t newPlan);
  45. /* 点击了检测计划的时间按钮,在这里修改时间 */
  46. void do_detectPlanModifiedTime(QPoint pBtnSize, bool isStartTime);
  47. /* 修改了静音、反相、过载相关的设置 */
  48. void do_checkBox_clicked();
  49. /* 恢复配置项 */
  50. void do_pBtn_restore_clicked();
  51. private:
  52. /* 初始化QListWidget */
  53. void initListWidget();
  54. /* 添加一个检测计划 */
  55. void addDetectPlan(const OnePlan_t& plan);
  56. /* 添加一个非检测计划 */
  57. void addNoDetectPlan(const OnePlan_t& plan);
  58. /* 重新排序检测计划 */
  59. void sortDetectPlanList();
  60. /* 排序非检测日期列表 */
  61. void sortNoDetectPlanList();
  62. /* 更新当前的检测计划列表 */
  63. QList<OnePlan_t> updateDetectPlanList(int id);
  64. /* 清空当前检测计划布局中的控件 */
  65. void removeAllDetectPlanWidgets();
  66. /* 清空当前非检测计划布局中的控件 */
  67. void removeAllNoDetectPlanWidgets();
  68. /* 从当前列表中添加控件到布局 */
  69. void addDetectPlanToLayout();
  70. /* 从当前列表中添加非检测计划控件到布局 */
  71. void addNoDetectPlanToLayout();
  72. /* 更新所有对比项的计划周期 */
  73. void updateCompareItemDetectPeriod(QMap<int, DetectPeriodConfig_t>& mapDetectConfig);
  74. private:
  75. Ui::CheckPeriodWidget *ui;
  76. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  77. QString m_qssPlan; /* 一条计划的样式表 */
  78. FromWebAPI* m_fromWebAPI = nullptr; /* 用于从Web API获取数据 */
  79. /* 检测计划 */
  80. QVBoxLayout* m_layoutDetectPlans; /* 检测计划的布局,计划控件都在这里面 */
  81. QList<OnePlan_t> m_currentPlanList; /* 当前的计划列表 */
  82. QList<OneDetectPlan*>* m_pListcurrDetect = nullptr; /* 当前的检测计划列表 */
  83. QMap<int, QList<OneDetectPlan*>*> m_mapDetectPlanList; /* 检测计划列表,key为对比项id,value为计划列表 */
  84. /* 非检测计划 */
  85. QVBoxLayout* m_layoutNoDetectPlans; /* 检测非检测计划日期的布局,计划控件都在这里面 */
  86. QList<OneDetectPlan*>* m_pListcurrNoDetect = nullptr; /* 当前的非检测计划日期列表 */
  87. QMap<int, QList<OneDetectPlan*>*> m_mapNoDetectPlanList;/* 非检测计划列表,key为对比项id,value为计划列表 */
  88. /* 非检测计划应用于静音、过载、反相 */
  89. QMap<int, NoDetectPlanApply_t> m_mapNoDetectApply; /* 非检测计划应用于静音、过载、反相的配置,key为对比项id */
  90. NoDetectPlanApply_t m_currNoDetectApply; /* 当前非检测计划应用配置 */
  91. };
  92. #endif // CHECKPERIODWIDGET_H