123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #ifndef MANAGERPLAN_H
- #define MANAGERPLAN_H
- #include <QDialog>
- #include "PlanData.h"
- namespace Ui {
- class ManagerPlan;
- }
- enum class Enum_Mode
- {
- Mode_Add = 0, /* 添加模式 */
- Mode_Modify = 1, /* 修改模式 */
- Mode_ModifyTemplate = 2, /* 修改模版模式,去掉了保存为模版的按钮 */
- };
- /**
- * @brief 管理计划页面
- *
- */
- class ManagerPlan : public QDialog
- {
- Q_OBJECT
- public:
- explicit ManagerPlan(Enum_Mode mode, QDialog *parent = nullptr);
- ~ManagerPlan();
- /* 获取是否点击了OK */
- bool isOK() const { return m_isOK; }
- /* 获取计划信息 */
- QMap<int, QList<PlanInfo>>& getPlanInfo() { return m_mapPlanInfo; }
- /* 设置频率信息 */
- void setFrequencyID(ChannelInfo& info);
- /* 设置计划列表,给修改模版使用 */
- void setPlanList(QList<OnePlanItemInfo>& listPlan);
- signals:
- /* 发送保存模版信号 */
- void signal_saveTemplate(ChannelInfo info);
- public slots:
- /* 修改UI样式 */
- void do_setUIStyle();
- private:
- /* 设置显示模式,这个需要最先调用 */
- void setMode(Enum_Mode mode);
- /* 设置时间和日期选择Tab */
- void setTabWidget();
- /* 设置可选择的周几 */
- void setWeekDay();
- /* 设置可选频率 */
- void setSelectFrequency();
- /* 查找本地计划列表,这个频率不存在则添加 */
- QList<PlanInfo>& findPlanList(const int chnID);
- /* 添加计划,同时添加ui的卡片计划和计划列表 */
- void addPlanItem(const int chnID, const PlanInfo& info);
- /* 修改容器中的计划 */
- void modifyPlanItem(const int chnID, const PlanInfo& nowInfo, const PlanInfo& newInfo);
- /* 判断开机和关机时间是否冲突 */
- inline bool checkOnAndOffTime(const PlanInfo& info);
- /* 比较两个时间点的大小 */
- inline bool timeIsGerater(const enum_WeekDay weekDay1, const QDateTime& time1,
- const enum_WeekDay weekDay2, const QDateTime& time2);
- /* 判断计划时间和列表中的时间是否冲突 */
- bool checkPlanTimeConflict(const int chnID, const PlanInfo& info);
- /* 判断计划时间和列表中的时间是否冲突,添加排除的计划,用于比较修改的计划 */
- bool checkPlanTimeConflict(const int chnID, const PlanInfo& newInfo, const PlanInfo& exInfo);
- /* 设置按钮显示或隐藏 */
- inline void setButtonVisible(bool isVisible);
- private slots:
- /* 选择了一个频率 */
- void do_selectFrequency(int index);
- /* 点击了添加按钮 */
- void do_addPlanItem();
- /* 点击修改按钮 */
- void do_modifyPlanItem();
- /* 点击了删除按钮 */
- void do_deletePlanItem();
- /* 点击了保存模版按钮 */
- void do_saveTemplate();
- /* 点击了OK按钮 */
- void do_pBtn_ok();
- /* 选中了一项,回显到编辑页面 */
- void do_tableView_clicked(PlanInfo& info);
- protected:
- /* 鼠标点击事件 */
- void mousePressEvent(QMouseEvent *event) override;
- /* 鼠标移动事件 */
- void mouseMoveEvent(QMouseEvent *event) override;
- /* 鼠标释放事件 */
- void mouseReleaseEvent(QMouseEvent *event) override;
- /* 事件过滤器 */
- bool eventFilter(QObject *watched, QEvent *event) override;
- private:
- Ui::ManagerPlan *ui;
- QPoint m_lastPos; /* 鼠标点击的位置 */
- bool m_isOK = false; /* 是否点击了OK按钮 */
- ChannelInfo m_channelInfo; /* 频率信息 */
- Enum_Mode m_mode; /* 显示模式 */
- /* 存储计划信息,修改过的频率计划,存储的是这个频率完整的计划 */
- QMap<int, QList<PlanInfo>> m_mapPlanInfo;
- };
- #endif // MANAGERPLAN_H
|