transmitterswitch.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef TRANSMITTERSWITCH_H
  2. #define TRANSMITTERSWITCH_H
  3. #include <QWidget>
  4. #include <QVector>
  5. #include <QPushButton>
  6. #include <QLabel>
  7. class WidgetItems;
  8. class FromWebAPI;
  9. struct InitData;
  10. /* 回调函数 */
  11. using trackCallBack = void(*)(int actionID, QString strMemo);
  12. namespace Ui {
  13. class TransmitterSwitch;
  14. }
  15. class TransmitterSwitch : public QWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. explicit TransmitterSwitch(QWidget *parent = nullptr);
  20. ~TransmitterSwitch();
  21. /* 设置样式表路径,给弹窗页面使用,不需要包含最后的white,black */
  22. void setQSSPath(const QString &qssPath);
  23. /* 设置WebAPI信息 */
  24. void setWebAPIInfo(const QString &url, const QString &serverID, const QString &serverKey);
  25. void setWebAPIInfo(const InitData& data);
  26. /* 获取EQM数据库中的计划 */
  27. void getExecPlanFromEQM();
  28. /* 将计划保存到EQM数据库 */
  29. void saveExecPlanToEQM();
  30. /* 亮/暗换肤,0是亮色,1是暗色 */
  31. void setUIStyle(int style);
  32. /* 设置回调函数 */
  33. void setTrackCallBack(trackCallBack cb);
  34. private slots:
  35. /* 每周几的按钮点击了,设置stackedWidegt页面 */
  36. void do_weekpBtn_clicked();
  37. /* 点击了添加计划按钮 */
  38. void do_pBtnAddExecPlan();
  39. /* 删除一项正常日计划 */
  40. void do_deleteOneItem(int week, int index);
  41. /* 一个计划修改了设备 */
  42. void do_changeDev();
  43. /* 点击修改执行时间 */
  44. void do_editExecTime(QTime t);
  45. /* 点击修改日期 */
  46. void do_editExecDate(QDate d);
  47. /* 修改了一个动作 */
  48. void do_editAction();
  49. /* 导入模板 */
  50. void do_importData();
  51. /* 保存为模板 */
  52. void do_exportData();
  53. /* 清空当前页计划 */
  54. void do_clearCurrentPage();
  55. /* 删除一个模板 */
  56. void do_deleteTemplate(QString name);
  57. /* 保存计划到EQM数据库 */
  58. void do_pBtn_savePlan();
  59. /* 从EQM数据库获取计划 */
  60. void do_pBtn_getPlan();
  61. /* 切换亮色/暗色外观 */
  62. void do_setUIStyle();
  63. private:
  64. /* 创建一周8天的item页面 */
  65. void createWeekWidget();
  66. /* 添加一个正常日的计划 */
  67. void addNormalOneItem(int week, QString devName, int actionID, QTime execTime);
  68. /* 添加一项特殊日计划 */
  69. void addSpecialOneItem(int week, QString devName, int actionID, QDate date, QTime execTime);
  70. /* 重新排序布局 */
  71. void sortLayout(int weekDay);
  72. /* 排序正常日 */
  73. void sortItemData(int weekDay);
  74. /* 重新布局项 */
  75. void sortLayoutUI(int weekDay);
  76. protected:
  77. /* 事件过滤器 */
  78. bool eventFilter(QObject *watched, QEvent *event);
  79. /* 鼠标点击事件 */
  80. // void mousePressEvent(QMouseEvent *event);
  81. private:
  82. Ui::TransmitterSwitch *ui;
  83. QLabel* m_tipText = nullptr; /* 提示文本 */
  84. QString m_styleSheet; /* 样式表 */
  85. QVector<QPushButton*> m_vecWeeks; /* 存储一周8天的按钮指针,方便后续操作 */
  86. QVector<WidgetItems*> m_vecWidgetItems; /* 存储每周8天的item页面 */
  87. QVector<QLayout*> m_vecLayouts; /* 存储每周8天的layout,item都添加到这里面 */
  88. FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */
  89. trackCallBack m_trackCB = nullptr; /* 回调函数 */
  90. };
  91. #endif // TRANSMITTERSWITCH_H