transmitterswitch.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. struct ChannelInfo;
  11. /* 回调函数 */
  12. using trackCallBack = void(*)(int actionID, QString strMemo);
  13. namespace Ui {
  14. class TransmitterSwitch;
  15. }
  16. class TransmitterSwitch : public QWidget
  17. {
  18. Q_OBJECT
  19. public:
  20. explicit TransmitterSwitch(QWidget *parent = nullptr);
  21. ~TransmitterSwitch();
  22. /* 设置样式表路径,给弹窗页面使用,不需要包含最后的white,black */
  23. void setQSSPath(const QString &qssPath);
  24. /* 设置WebAPI信息 */
  25. void setWebAPIInfo(const QString &url, const QString &serverID, const QString &serverKey);
  26. void setWebAPIInfo(const InitData& data);
  27. /* 获取EQM数据库中的计划 */
  28. void getExecPlanFromEQM();
  29. /* 将计划保存到EQM数据库 */
  30. void saveExecPlanToEQM();
  31. /* 亮/暗换肤,0是亮色,1是暗色 */
  32. void setUIStyle(int style);
  33. /* 设置回调函数 */
  34. void setTrackCallBack(trackCallBack cb);
  35. private slots:
  36. /* 点击了添加计划按钮 */
  37. void do_pBtnAddExecPlan();
  38. /* 导入模板 */
  39. void do_importData();
  40. /* 保存为模板 */
  41. void do_exportData();
  42. /* 清空当前页计划 */
  43. void do_clearCurrentPage();
  44. /* 删除一个模板 */
  45. void do_deleteTemplate(QString name);
  46. /* 保存计划到EQM数据库 */
  47. void do_pBtn_savePlan();
  48. /* 从EQM数据库获取计划 */
  49. void do_pBtn_getPlan();
  50. /* 切换亮色/暗色外观 */
  51. void do_setUIStyle();
  52. /* 选择了一个频率按钮,取消其他的选择 */
  53. void do_selectFrequencyBtn();
  54. private:
  55. /* 添加一个频率,包括左侧按钮和右侧卡片 */
  56. void createOneCard(const ChannelInfo& chnInfo);
  57. /* 删除一个频率 */
  58. void deleteOneCard(int channelID);
  59. /* 创建所有频率卡片 */
  60. void createAllCard();
  61. protected:
  62. /* 事件过滤器 */
  63. bool eventFilter(QObject *watched, QEvent *event) override;
  64. /* 窗口缩放事件 */
  65. void resizeEvent(QResizeEvent *event) override;
  66. private:
  67. Ui::TransmitterSwitch *ui;
  68. QLabel* m_tipText = nullptr; /* 提示文本 */
  69. QString m_styleSheet; /* 样式表 */
  70. QList<QPushButton*> m_listFrequencyBtn; /* 频率按钮列表 */
  71. QVector<WidgetItems*> m_vecWidgetItems; /* 存储每周8天的item页面 */
  72. QVector<QLayout*> m_vecLayouts; /* 存储每周8天的layout,item都添加到这里面 */
  73. FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */
  74. trackCallBack m_trackCB = nullptr; /* 回调函数 */
  75. };
  76. #endif // TRANSMITTERSWITCH_H