managerplan.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef MANAGERPLAN_H
  2. #define MANAGERPLAN_H
  3. #include <QDialog>
  4. #include "PlanData.h"
  5. namespace Ui {
  6. class ManagerPlan;
  7. }
  8. enum class Enum_Mode
  9. {
  10. Mode_Add = 0, /* 添加模式 */
  11. Mode_Modify = 1 /* 修改模式 */
  12. };
  13. /**
  14. * @brief 管理计划页面
  15. *
  16. */
  17. class ManagerPlan : public QDialog
  18. {
  19. Q_OBJECT
  20. public:
  21. explicit ManagerPlan(QDialog *parent = nullptr);
  22. ~ManagerPlan();
  23. /* 获取是否点击了OK */
  24. bool isOK() const { return m_isOK; }
  25. /* 获取计划信息 */
  26. QMap<int, QList<PlanInfo>>& getPlanInfo() { return m_mapPlanInfo; }
  27. /* 设置显示模式,需要在执行exec()之前调用 */
  28. void setMode(Enum_Mode mode);
  29. /* 设置频率信息 */
  30. void setFrequencyID(ChannelInfo& info);
  31. public slots:
  32. /* 修改UI样式 */
  33. void do_setUIStyle();
  34. private:
  35. /* 设置时间和日期选择Tab */
  36. void setTabWidget();
  37. /* 设置可选择的周几 */
  38. void setWeekDay();
  39. /* 设置可选频率 */
  40. void setSelectFrequency();
  41. /* 查找本地计划列表,这个频率不存在则添加 */
  42. QList<PlanInfo>& findPlanList(const int chnID);
  43. /* 添加计划,同时添加ui的卡片计划和计划列表 */
  44. void addPlanItem(const int chnID, const PlanInfo& info);
  45. /* 修改容器中的计划 */
  46. void modifyPlanItem(const int chnID, const PlanInfo& nowInfo, const PlanInfo& newInfo);
  47. /* 判断开机和关机时间是否冲突 */
  48. inline bool checkOnAndOffTime(const PlanInfo& info);
  49. /* 比较两个时间点的大小 */
  50. inline bool timeIsGerater(const enum_WeekDay weekDay1, const QDateTime& time1,
  51. const enum_WeekDay weekDay2, const QDateTime& time2);
  52. /* 判断计划时间和列表中的时间是否冲突 */
  53. bool checkPlanTimeConflict(const int chnID, const PlanInfo& info);
  54. /* 判断计划时间和列表中的时间是否冲突,添加排除的计划,用于比较修改的计划 */
  55. bool checkPlanTimeConflict(const int chnID, const PlanInfo& newInfo, const PlanInfo& exInfo);
  56. /* 设置按钮显示或隐藏 */
  57. inline void setButtonVisible(bool isVisible);
  58. private slots:
  59. /* 选择了一个频率 */
  60. void do_selectFrequency(int index);
  61. /* 点击了添加按钮 */
  62. void do_addPlanItem();
  63. /* 点击修改按钮 */
  64. void do_modifyPlanItem();
  65. /* 点击了删除按钮 */
  66. void do_deletePlanItem();
  67. /* 点击了OK按钮 */
  68. void do_pBtn_ok();
  69. /* 选中了一项,回显到编辑页面 */
  70. void do_tableView_clicked(PlanInfo& info);
  71. protected:
  72. /* 鼠标点击事件 */
  73. void mousePressEvent(QMouseEvent *event) override;
  74. /* 鼠标移动事件 */
  75. void mouseMoveEvent(QMouseEvent *event) override;
  76. /* 鼠标释放事件 */
  77. void mouseReleaseEvent(QMouseEvent *event) override;
  78. /* 事件过滤器 */
  79. bool eventFilter(QObject *watched, QEvent *event) override;
  80. private:
  81. Ui::ManagerPlan *ui;
  82. QPoint m_lastPos; /* 鼠标点击的位置 */
  83. bool m_isOK = false; /* 是否点击了OK按钮 */
  84. ChannelInfo m_channelInfo; /* 频率信息 */
  85. /* 存储计划信息,修改过的频率计划,存储的是这个频率完整的计划 */
  86. QMap<int, QList<PlanInfo>> m_mapPlanInfo;
  87. };
  88. #endif // MANAGERPLAN_H