checkperiodwidget.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. namespace Ui {
  12. class CheckPeriodWidget;
  13. }
  14. /**
  15. * @brief 检测周期设置界面
  16. *
  17. * 该界面用于设置检测周期,包括添加检测计划和不检测计划
  18. */
  19. class CheckPeriodWidget : public QWidget
  20. {
  21. Q_OBJECT
  22. public:
  23. explicit CheckPeriodWidget(QWidget *parent = nullptr);
  24. ~CheckPeriodWidget();
  25. /* 更新可选的对比项列表 */
  26. void updateCompareItemList(const QList<CompareItemInfo_t>& compareItemList);
  27. /* 设置计划列表 */
  28. void setDetectPlanList(const QList<OnePlan_t>& planList);
  29. private slots:
  30. /* 选择了一个对比项 */
  31. void do_comboBox_selectCompareItem_currentIndexChanged(int index);
  32. /* 添加一个检测计划 */
  33. void do_pBtn_addDetectPlan_clicked();
  34. /* 添加一个不检测计划 */
  35. void do_pBtn_addNoDetectPlan_clicked();
  36. /* 删除一个检测计划 */
  37. void do_pBtn_deleteDetectPlan_clicked();
  38. /* 删除一个不检测计划 */
  39. void do_pBtn_deleteNoDetectPlan_clicked();
  40. /* 修改了日期或周几,检测是否冲突 */
  41. void do_detectPlanModifiedWeek(OnePlan_t formerPlan, OnePlan_t newPlan);
  42. /* 点击了检测计划的时间按钮,在这里修改时间 */
  43. void do_detectPlanModifiedTime(QPoint pBtnSize, bool isStartTime);
  44. private:
  45. /* 初始化QListWidget */
  46. void initListWidget();
  47. /* 添加一个检测计划 */
  48. void addDetectPlan(const OnePlan_t& plan);
  49. /* 重新排序检测计划 */
  50. void sortDetectPlanList();
  51. /* 更新当前的检测计划列表 */
  52. QList<OnePlan_t> updateDetectPlanList(int id);
  53. /* 清空当前检测计划布局中的控件 */
  54. void removeAllDetectPlanWidgets();
  55. /* 从当前列表中添加控件到布局 */
  56. void addDetectPlanToLayout();
  57. private:
  58. Ui::CheckPeriodWidget *ui;
  59. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  60. QVBoxLayout* m_layoutDetectPlans; /* 检测计划的布局,计划控件都在这里面 */
  61. QString m_qssPlan; /* 一条计划的样式表 */
  62. QList<OnePlan_t> m_currentPlanList; /* 当前的计划列表 */
  63. QList<OneDetectPlan*>* m_pListcurrDetect = nullptr; /* 当前的检测计划列表 */
  64. QMap<int, QList<OneDetectPlan*>*> m_mapDetectPlanList; /* 检测计划列表,key为对比项id,value为计划列表 */
  65. };
  66. #endif // CHECKPERIODWIDGET_H