123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #ifndef EXECPLAN_H
- #define EXECPLAN_H
- #include <QWidget>
- #include <QStackedWidget>
- #include <QPushButton>
- #include <QLabel>
- #include <QTime>
- #include <QList>
- #include <QDate>
- #include <QRadioButton>
- #include <QEventLoop>
- #include "spdlog/spdlog.h"
- #include "UI/ExecPlan/ExecPlanItem.h"
- class Widget;
- class AddNormalItem;
- class AddSpecialItem;
- class ScrollWidget;
- class TimeWidget;
- class CDate;
- class ExecPlan : public QWidget
- {
- Q_OBJECT
- friend AddNormalItem;
- friend AddSpecialItem;
- public:
- explicit ExecPlan(Widget* mainUI = nullptr,QWidget* mask = nullptr,QWidget* parent = nullptr);
- ~ExecPlan();
- bool judgeTimeRepetition(QList<ExecPlanItem*>& list,const QString& devName,const QTime& time); /* 判断时间是否重复 */
- bool judgeTimeRepetition(QList<ExecPlanItem*>& list,ExecPlanItem* item); /* 判断时间是否重复 */
- bool judgeTimeRepetition(QList<ExecPlanItem*>& list,ExecPlanItem* item,const QTime& time); /* 判断时间是否重复 */
- bool judgeDateTimeRepetition(QList<ExecPlanItem*>& list,const QString& devName,const QDate& date,const QTime& time); /* 判断日期时间是否重复 */
- bool judgeDateTimeRepetition(QList<ExecPlanItem*>& list,ExecPlanItem* item,const QTime& time); /* 判断日期时间是否重复 */
- bool judgeDateTimeRepetition(QList<ExecPlanItem*>& list,ExecPlanItem* item,const QDate& date); /* 判断日期时间是否重复 */
- bool judgeDateTimeRepetition(QList<ExecPlanItem*>& list,ExecPlanItem* item); /* 判断日期时间是否重复 */
- char getDefaultPlan(); /* 获取默认计划 */
- char getExecMode(); /* 获取执行模式 */
- QVector<QList<ExecPlanItem*>*>& vecItem(); /* 获取计划容器 */
- QStackedWidget* stackWidget(); /* 获取stackWidget的指针 */
- QVector<QLayout*>& layout(); /* 获取显示项的layout */
- void SortAndRefreshUI(); /* 根据时间排序,并刷新UI */
- void SortAndRefreshUI(int index); /* 根据时间排序,并刷新UI */
- void setDefaultPlan(int num); /* 设置默认计划 */
- void setTimeOrDay(int num); /* 按时刻还是按天 */
- bool checkDataBaseTableName(const QString& tableName);/* 检查数据库中有没有这个表格 */
- void clearOnePage(int num); /* 删除一页 */
- bool itemIsEmpty(); /* 当前页的项是否为空 */
- signals:
- void signal_refreshUIAgain();
- public slots:
- void do_selectDayOfWeeks(); /* 选择周几 */
- void do_devChanged(const QString& previous,const QString& now); /* 修改了一个设备 */
- private slots:
- void do_pBtnAddExecPlan(); /* 点击添加时段按钮 */
- void do_addNormalOneItem(QString dev,QString action,QTime time);/* 新增一条正常日期项 */
- void do_addSpecialOneItem(QString dev,QString action,QDate date,QTime time);/* 新增一条特殊日期项 */
- void do_download(); /* 下载按钮 */
- void do_clearExecPlan(); /* 清空计划 */
- void do_saveTemplate(); /* 保存模版 */
- void do_importTemplate(); /* 导入模板按钮 */
- void do_saveTemplateToSQL(QString name); /* 将数据保存到数据库中 */
- void do_importTemplateFromSQL(QString name); /* 导入模板 */
- void do_deleteTemplateFromSQL(QString name); /* 删除模版 */
- void do_deleteOneItem(int num); /* 删除一个项 */
- void do_editExecTime(QTime t); /* 修改执行时间 */
- void do_editDate(QDate d); /* 修改日期 */
- void do_editDev(); /* 修改了设备 */
- void do_cfgDevChanged(); /* 配置好的设备改变了 */
- void do_devDelete(const QString& devName); /* 删除了一个配置好的设备 */
- void do_pBtnGetEQMData(); /* 从EQM获取计划数据 */
- protected:
- void paintEvent(QPaintEvent *event);
- bool eventFilter(QObject *watched, QEvent *event);
- private:
- void uiSupplement(); /* 补充UI */
- void createDataBase(); /* 连接SQLite数据库 */
- /* 本地配置转换成发送的结构体 */
- void HostToEQMJson(QVector<QList<ExecPlanItem*>*>& cfgVec, QList<ExecPlanItemInfo>& listInfo);
- /* 添加从EQM获取到的数据 */
- void EQMToHost(QList<ExecPlanItemInfo>& listInfo);
- private:
- /* UI类 */
- std::shared_ptr<spdlog::logger> m_logger = nullptr;
- Widget* m_mainUI = nullptr; /* 父窗口指针 */
- QWidget* m_mask = nullptr; /* 遮罩页面 */
- QWidget* m_leftColumn = nullptr; /* 左边栏 */
- QStackedWidget* m_stack = nullptr; /* 内容容器 */
- QPushButton* m_pBtnAddItem = nullptr; /* 添加时段按钮 */
- QPushButton* m_pBtnClearExecPlan = nullptr; /* 清空时段按钮 */
- QPushButton* m_pBtnImportTemplate = nullptr; /* 导入模版 */
- QPushButton* m_pBtnSaveTemplate = nullptr; /* 保存为模版 */
- QPushButton* m_pBtnGetEQMData = nullptr; /* 从EQM获取计划数据 */
- QLabel* m_labelButtomLine = nullptr; /* 底部分割线 */
- QPushButton* m_pBtnDownload = nullptr; /* 下载按钮 */
- QPushButton* m_pBtnDefault = nullptr; /* 默认计划 */
- QRadioButton* m_rBtnDoTime = nullptr; /* 按时刻 */
- QRadioButton* m_rBtnDoDay = nullptr; /* 按天 */
- QLabel* m_TipText = nullptr; /* 提示文本 */
- QLabel* m_labelTip = nullptr; /* 提示的感叹号小图标 */
- /* 容器 */
- QVector<QPushButton*> m_vecWeeks; /* 保存一周8天的按钮 */
- QVector<QList<ExecPlanItem*>*> m_vecItem; /* 存储一周8天的列表指针,每个列表存储着这一天的时间段 */
- QVector<QLayout*> m_vecLayout; /* 这个数组里面的widget是真正显示项的Layout,这个Layout会自动出现滚动条 */
- QSqlDatabase m_DB;
- QVector<ScrollWidget*> m_vecScrollArea; /* 存储QScrollArea */
- /* 时间和日历选择相关 */
- QEventLoop m_loop; /* 阻塞时间选择器 */
- TimeWidget* m_timeEdit = nullptr; /* 时间选择 */
- CDate* m_dateEdit = nullptr; /* 日期选择 */
- // bool m_first; /* 记录是不是第一次进入这个页面 */
- };
- #endif /* EXECPLAN_H */
|