transmitterswitch.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #ifndef TRANSMITTERSWITCH_H
  2. #define TRANSMITTERSWITCH_H
  3. #include "flowlayout.h"
  4. #include <QWidget>
  5. #include <QVector>
  6. #include <QPushButton>
  7. #include <QLabel>
  8. class WidgetItems;
  9. class FromWebAPI;
  10. class FlowLayout;
  11. struct InitData;
  12. struct ChannelInfo;
  13. struct OneTemplateInfo;
  14. /* 回调函数 */
  15. using trackCallBack = void(*)(int actionID, QString strMemo);
  16. namespace Ui {
  17. class TransmitterSwitch;
  18. }
  19. class TransmitterSwitch : public QWidget
  20. {
  21. Q_OBJECT
  22. public:
  23. explicit TransmitterSwitch(QWidget *parent = nullptr);
  24. ~TransmitterSwitch();
  25. /* 设置样式表路径,给弹窗页面使用,不需要包含最后的white,black */
  26. void setQSSPath(const QString &qssPath);
  27. /* 设置WebAPI信息 */
  28. void setWebAPIInfo(const QString &url, const QString &serverID, const QString &serverKey);
  29. void setWebAPIInfo(const InitData& data);
  30. /* 获取EQM数据库中的计划 */
  31. void getExecPlanFromEQM();
  32. /* 将计划保存到EQM数据库 */
  33. void saveExecPlanToEQM();
  34. /* 亮/暗换肤,0是亮色,1是暗色 */
  35. void setUIStyle(int style);
  36. /* 设置回调函数 */
  37. void setTrackCallBack(trackCallBack cb);
  38. private slots:
  39. /* 点击了添加计划按钮 */
  40. void do_pBtnAddExecPlan();
  41. /* 点击了修改按钮 */
  42. void do_pBtnModifyExecPlan();
  43. /* 点击了刷新按钮 */
  44. void do_pBtnRefresh();
  45. /* 点击了“是否开启计划”按钮 */
  46. void do_pBtnIsOpenPlan();
  47. /* 点击了“执行模式”按钮 */
  48. void do_pBtnExecMode();
  49. /* 点击了清空计划按钮 */
  50. void do_pBtnClearPlan();
  51. /* 点击了复制到其他频率按钮 */
  52. void do_pBtnCopyToOther();
  53. /* 点击了管理模板按钮 */
  54. void do_pBtnManageTemplate();
  55. /* 导入模板 */
  56. void do_importData();
  57. /* 保存为模板 */
  58. void do_exportData();
  59. /* 将模版写入数据库 */
  60. void do_exportDataToEQM(ChannelInfo info);
  61. /* 删除一个模版 */
  62. void do_deleteTemplate(OneTemplateInfo info);
  63. /* 保存计划到EQM数据库 */
  64. void do_pBtn_savePlan();
  65. /* 从EQM数据库获取计划 */
  66. void do_pBtn_getPlan();
  67. /* 切换亮色/暗色外观 */
  68. void do_setUIStyle();
  69. /* 选择了一个频率按钮,取消其他的选择 */
  70. void do_selectFrequencyBtn();
  71. private:
  72. /* 添加一个频率,包括左侧按钮和右侧卡片 */
  73. void createOneCard(const ChannelInfo& chnInfo);
  74. /* 删除一个频率 */
  75. void deleteOneCard(int channelID);
  76. /* 创建所有频率卡片 */
  77. void createAllCard();
  78. /* 显示某个卡片,隐藏其他卡片 */
  79. void showOneCard(QPushButton *btn);
  80. /* 计算并设置设置卡片大小 */
  81. void setCardSize();
  82. /* 计算并设置提示文本的位置 */
  83. void setTipTextPos();
  84. protected:
  85. /* 事件过滤器 */
  86. bool eventFilter(QObject *watched, QEvent *event) override;
  87. /* 窗口缩放事件 */
  88. void resizeEvent(QResizeEvent *event) override;
  89. /* 显示事件 */
  90. void showEvent(QShowEvent *event) override;
  91. private:
  92. Ui::TransmitterSwitch *ui;
  93. QWidget* m_widgetParent = nullptr; /* 父窗口 */
  94. QLabel* m_tipText = nullptr; /* 提示文本 */
  95. QString m_styleSheet; /* 样式表 */
  96. QList<QPushButton*> m_listFrequencyBtn; /* 频率按钮列表 */
  97. FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */
  98. FlowLayout* m_flowlayout = nullptr; /* 流式布局 */
  99. trackCallBack m_trackCB = nullptr; /* 回调函数 */
  100. const quint32 m_userData_Btn = 1; /* 按钮的用户数据 */
  101. const int m_cardHorSpacing = 12; /* 卡片间的横向间距 */
  102. const int m_cardVerSpacing = 12; /* 卡片间的纵向间距 */
  103. const int m_cardHorNumber = 4; /* 卡片的横向数量 */
  104. const int m_cardVerNumber = 2; /* 卡片的纵向数量 */
  105. };
  106. #endif // TRANSMITTERSWITCH_H