123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #ifndef TRANSMITTERSWITCH_H
- #define TRANSMITTERSWITCH_H
- #include <QWidget>
- #include <QVector>
- #include <QPushButton>
- #include <QLabel>
- #include "flowlayout.h"
- #include "TransmitterSwitchInfo.h"
- class WidgetItems;
- class FromWebAPI;
- class FlowLayout;
- class FromSQLite;
- struct InitData;
- struct OneTemplateInfo;
- /* 回调函数 */
- 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);
- /* 设置WebAPI路径,不获取数据,不创建卡片 */
- void setWebAPIInfoOnly(const InitData& data);
- /* 设置频率信息,给离线版使用 */
- void setFrequencyInfo(const ExecPlanInfo& info, bool useOnlineDB = true);
- /* 设置一页的卡片数量 */
- void setOnePageCardNum(int horNum, int verNum);
- /* 清空内容,用于ESM8C上位机关闭使用EQM数据库的时候调用 */
- void clearAll();
-
- /* 获取一个频率的计划数据,只应用于本地数据库,下载到下位机用 */
- void getOnePlanData(QList<OnePlanItemInfo>* listPlan, ExecPlanConfig* config, int channelID = 0);
- /* 设置计划信息 */
- void setOnePlanData(QList<OnePlanItemInfo>& listPlan, ExecPlanConfig& config, int channelID = 0);
- private slots:
- /* 点击了添加计划按钮 */
- void do_pBtnAddExecPlan();
- /* 点击了修改按钮 */
- void do_pBtnModifyExecPlan();
- /* 点击了刷新按钮 */
- void do_pBtnRefresh();
- /* 点击了“是否开启计划”按钮 */
- void do_pBtnIsOpenPlan();
- /* 点击了“执行模式”按钮 */
- void do_pBtnExecMode();
- /* 点击了清空计划按钮 */
- void do_pBtnClearPlan();
- /* 点击了复制到其他频率按钮 */
- void do_pBtnCopyToOther();
-
- /* 导入模板 */
- void do_importData();
- /* 点击了保存模版按钮 */
- void do_exportData();
- /* 将模版写入数据库 */
- void do_saveTemplateToDB(ChannelInfo info);
- /* 删除一个模版 */
- void do_deleteTemplate(OneTemplateInfo info);
- /* 点击了管理模板按钮 */
- void do_pBtnManageTemplate();
- /* 保存计划到EQM数据库 */
- void do_pBtn_savePlan();
- /* 从EQM数据库获取计划 */
- void do_pBtn_getPlan();
- /* 切换亮色/暗色外观 */
- void do_setUIStyle();
- /* 选择了一个频率按钮,取消其他的选择 */
- void do_selectFrequencyBtn();
- private:
- /* 添加一个频率,包括左侧按钮和右侧卡片 */
- void createOneCard(const ChannelInfo& chnInfo);
- /* 删除一个频率 */
- void deleteOneCard(int channelID);
- /* 创建所有频率卡片 */
- void createAllCard();
- /* 显示某个卡片,隐藏其他卡片 */
- void showOneCard(QPushButton *btn);
- /* 计算并设置设置卡片大小 */
- void setCardSize();
- /* 计算并设置提示文本的位置 */
- void setTipTextPos();
- /* 设置单频率模式 */
- void setOneFrequencyMode();
- /* 设置使用在线或者使用离线数据库,主要是保存模版 */
- void setUseOnlineDB(bool useOnlineDB);
- /* 从EQM数据库导入模版 */
- void importTemplateFromEQM();
- /* 从SQLite导入模版 */
- void importTemplateFromSQLite();
- /* 将模版数据保存到EQM数据库 */
- void saveTemplateToEQM(ChannelInfo info);
- /* 保存计划到SQLite数据库 */
- void saveTemplateToSQLite(ChannelInfo info);
- /* 从EQM数据库中删除一个模版 */
- void deleteTemplateFromEQM(OneTemplateInfo info);
- /* 从SQLite数据库中删除一个模版 */
- void deleteTemplateFromSQLite(OneTemplateInfo info);
- /* 管理EQM数据库的模版数据 */
- void manageTemplateFromEQM();
- /* 管理SQLite数据库的模版数据 */
- void manageTemplateFromSQLite();
- protected:
- /* 事件过滤器 */
- bool eventFilter(QObject *watched, QEvent *event) override;
- /* 窗口缩放事件 */
- void resizeEvent(QResizeEvent *event) override;
- /* 显示事件 */
- void showEvent(QShowEvent *event) override;
- private:
- Ui::TransmitterSwitch *ui;
- QLabel* m_tipText = nullptr; /* 提示文本 */
- QString m_styleSheet; /* 样式表 */
- QList<QPushButton*> m_listFrequencyBtn; /* 频率按钮列表 */
- FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */
- FlowLayout* m_flowlayout = nullptr; /* 流式布局 */
- FromSQLite* m_fromSQLite = nullptr; /* SQLite操作类 */
- trackCallBack m_trackCB = nullptr; /* 回调函数 */
- const std::string m_userData_Btn = "custom_BtnData"; /* 按钮的用户数据 */
- const int m_cardHorSpacing = 12; /* 卡片间的横向间距 */
- const int m_cardVerSpacing = 12; /* 卡片间的纵向间距 */
- int m_cardHorNumber = 4; /* 卡片的横向数量 */
- int m_cardVerNumber = 2; /* 卡片的纵向数量 */
- };
- #endif // TRANSMITTERSWITCH_H
|