#ifndef TRANSMITTERSWITCH_H #define TRANSMITTERSWITCH_H #include #include #include #include class WidgetItems; class FromWebAPI; struct InitData; /* 回调函数 */ using trackCallBack = void(*)(int actionID, QString strMemo); namespace Ui { class TransmitterSwitch; } class TransmitterSwitch : public QWidget { Q_OBJECT public: explicit TransmitterSwitch(QWidget *parent = nullptr); ~TransmitterSwitch(); /* 设置样式表路径,给弹窗页面使用,不需要包含最后的white,black */ void setQSSPath(const QString &qssPath); /* 设置WebAPI信息 */ void setWebAPIInfo(const QString &url, const QString &serverID, const QString &serverKey); void setWebAPIInfo(const InitData& data); /* 获取EQM数据库中的计划 */ void getExecPlanFromEQM(); /* 将计划保存到EQM数据库 */ void saveExecPlanToEQM(); /* 亮/暗换肤,0是亮色,1是暗色 */ void setUIStyle(int style); /* 设置回调函数 */ void setTrackCallBack(trackCallBack cb); private slots: /* 每周几的按钮点击了,设置stackedWidegt页面 */ void do_weekpBtn_clicked(); /* 点击了添加计划按钮 */ void do_pBtnAddExecPlan(); /* 删除一项正常日计划 */ void do_deleteOneItem(int week, int index); /* 一个计划修改了设备 */ void do_changeDev(); /* 点击修改执行时间 */ void do_editExecTime(QTime t); /* 点击修改日期 */ void do_editExecDate(QDate d); /* 修改了一个动作 */ void do_editAction(); /* 导入模板 */ void do_importData(); /* 保存为模板 */ void do_exportData(); /* 清空当前页计划 */ void do_clearCurrentPage(); /* 删除一个模板 */ void do_deleteTemplate(QString name); /* 保存计划到EQM数据库 */ void do_pBtn_savePlan(); /* 从EQM数据库获取计划 */ void do_pBtn_getPlan(); /* 切换亮色/暗色外观 */ void do_setUIStyle(); private: /* 创建一周8天的item页面 */ void createWeekWidget(); /* 添加一个正常日的计划 */ void addNormalOneItem(int week, QString devName, int actionID, QTime execTime); /* 添加一项特殊日计划 */ void addSpecialOneItem(int week, QString devName, int actionID, QDate date, QTime execTime); /* 重新排序布局 */ void sortLayout(int weekDay); /* 排序正常日 */ void sortItemData(int weekDay); /* 重新布局项 */ void sortLayoutUI(int weekDay); protected: /* 事件过滤器 */ bool eventFilter(QObject *watched, QEvent *event); /* 鼠标点击事件 */ // void mousePressEvent(QMouseEvent *event); private: Ui::TransmitterSwitch *ui; QLabel* m_tipText = nullptr; /* 提示文本 */ QString m_styleSheet; /* 样式表 */ QVector m_vecWeeks; /* 存储一周8天的按钮指针,方便后续操作 */ QVector m_vecWidgetItems; /* 存储每周8天的item页面 */ QVector m_vecLayouts; /* 存储每周8天的layout,item都添加到这里面 */ FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */ trackCallBack m_trackCB = nullptr; /* 回调函数 */ }; #endif // TRANSMITTERSWITCH_H