Bläddra i källkod

V1.2.2
1、新增了回调函数功能

Apple 2 månader sedan
förälder
incheckning
0937f04ee1

+ 10 - 0
TransmitterSwitch/TransmitterSwitchInfo.cpp

@@ -4,6 +4,16 @@
 #include <QFile>
 #include <QEventLoop>
 
+/**
+ * @brief 全局的回调函数传入值和说明
+ * 
+ */
+const QMap<int, QString> g_mapTrack = {
+    {1, ""},            /* 保存计划 */
+    {2, ""},            /* 加载计划 */
+    {3, "保存模板"},
+    {4, "导入模板"}
+};
 
 
 /**

+ 1 - 0
TransmitterSwitch/TransmitterSwitchInfo.h

@@ -10,6 +10,7 @@
 
 #define nJson nlohmann::json
 
+extern const QMap<int, QString> g_mapTrack;
 
 /**
  * @brief 支持的发射机类型

+ 11 - 0
TransmitterSwitch/lhtranmitterswitch.cpp

@@ -93,3 +93,14 @@ int LHTRANSMITTERSWITCH_EXPORT DoRelease()
     }
     return 0;
 }
+
+int LHTRANSMITTERSWITCH_EXPORT DoSetCallBack(trackCallBack cb)
+{
+    if(g_pTransmitterSwitch == nullptr)
+    {
+        return -1;
+    }
+    g_pTransmitterSwitch->setTrackCallBack(cb);
+
+    return 0;
+}

+ 13 - 0
TransmitterSwitch/lhtranmitterswitch.h

@@ -13,6 +13,9 @@
 
 struct InitData;
 
+/* 回调函数 */
+using trackCallBack = void(*)(int actionID, QString strMemo);
+
 extern "C"
 {
 
@@ -92,6 +95,16 @@ int LHTRANSMITTERSWITCH_EXPORT DoSaveExecPlanToEQM();
 //------------------------------------------------------------------------
 int LHTRANSMITTERSWITCH_EXPORT DoRelease();
 
+//------------------------------------------------------------------------
+//函    数: DoSetCallBack()
+//
+//说    明: 释放资源
+//
+//参    数: trackCallBack 函数指针
+//
+//返 回 值:0:成功; 其他:失败(详见返回码定义)
+//------------------------------------------------------------------------
+int LHTRANSMITTERSWITCH_EXPORT DoSetCallBack(trackCallBack cb);
 
 }
 

+ 33 - 0
TransmitterSwitch/transmitterswitch.cpp

@@ -204,6 +204,12 @@ void TransmitterSwitch::getExecPlanFromEQM()
     }
     /* 获取数据插入到全局变量中,会将更新标志位置true,这里需要手动置为false */
     IData.setUpdate(false);
+
+    /* 调用回调函数 */
+    if(m_trackCB != nullptr)
+    {
+        m_trackCB(2, g_mapTrack.value(2));
+    }
 }
 
 /* 将计划保存到EQM数据库 */
@@ -272,6 +278,12 @@ void TransmitterSwitch::saveExecPlanToEQM()
     /* 将配置写入数据库 */
     m_fromWebAPI->insertConfigData(CfgData.getMapConfigData());
 
+    /* 调用回调函数 */
+    if(m_trackCB != nullptr)
+    {
+        m_trackCB(1, g_mapTrack.value(1));
+    }
+
 }
 
 /* 亮/暗换肤,0是亮色,1是暗色 */
@@ -289,6 +301,16 @@ void TransmitterSwitch::setUIStyle(int style)
     }
 }
 
+/* 设置回调函数 */
+void TransmitterSwitch::setTrackCallBack(trackCallBack cb)
+{
+    if(cb == nullptr)
+    {
+        return;
+    }
+    m_trackCB = cb;
+}
+
 
 /* 每周几的按钮点击了,设置stackedWidegt页面 */
 void TransmitterSwitch::do_weekpBtn_clicked()
@@ -555,6 +577,12 @@ void TransmitterSwitch::do_importData()
         }
         /* 排序 */
         sortLayout(weekDay);
+
+        /* 调用回调函数 */
+        if(m_trackCB != nullptr)
+        {
+            m_trackCB(4, g_mapTrack.value(4));
+        }
     }
 }
 
@@ -604,6 +632,11 @@ void TransmitterSwitch::do_exportData()
         }else {
             TipWidget::display(TipWidget::OPERATOR_FAIL, "保存模版失败", this);
         }
+        /* 调用回调函数 */
+        if(m_trackCB != nullptr)
+        {
+            m_trackCB(3, g_mapTrack.value(3));
+        }
     }
 }
 

+ 7 - 0
TransmitterSwitch/transmitterswitch.h

@@ -10,6 +10,9 @@ class WidgetItems;
 class FromWebAPI;
 struct InitData;
 
+/* 回调函数 */
+using trackCallBack = void(*)(int actionID, QString strMemo);
+
 namespace Ui {
 class TransmitterSwitch;
 }
@@ -33,6 +36,8 @@ public:
     void saveExecPlanToEQM();
     /* 亮/暗换肤,0是亮色,1是暗色 */
     void setUIStyle(int style);
+    /* 设置回调函数 */
+    void setTrackCallBack(trackCallBack cb);
 
 private slots:
     /* 每周几的按钮点击了,设置stackedWidegt页面 */
@@ -100,6 +105,8 @@ private:
     QVector<QLayout*> m_vecLayouts;         /* 存储每周8天的layout,item都添加到这里面 */
 
     FromWebAPI* m_fromWebAPI = nullptr;     /* WebAPI操作类 */
+
+    trackCallBack m_trackCB = nullptr;     /* 回调函数 */
     
 };
 

+ 8 - 1
show1/LHTransmitterSwitchAPI/lhtransmitterswitchapi.cpp

@@ -34,9 +34,11 @@ bool LHTransmitterSwitchAPI::loadLibrary()
     m_pGetExecPlanFromEQM = (pGetExecPlanFromEQM)lib.resolve("DoGetExecPlanFromEQM");
     m_pSaveExecPlanToEQM = (pSaveExecPlanToEQM)lib.resolve("DoSaveExecPlanToEQM");
     m_pRelease = (pRelease)lib.resolve("DoRelease");
+    m_pSetCallBack = (pSetCallBack)lib.resolve("DoSetCallBack");
 
     if(m_pInit == nullptr || m_pCreateWindow == nullptr || m_pShowWindow == nullptr || 
-        m_pGetExecPlanFromEQM == nullptr || m_pSaveExecPlanToEQM == nullptr || m_pRelease == nullptr)
+        m_pGetExecPlanFromEQM == nullptr || m_pSaveExecPlanToEQM == nullptr || 
+        m_pRelease == nullptr || m_pSetCallBack == nullptr)
     {
         return false;
     }
@@ -81,3 +83,8 @@ int LHTransmitterSwitchAPI::DoRelease()
 {
     return m_pRelease();
 }
+
+int LHTransmitterSwitchAPI::DoSetCallBack(trackCallBack cb)
+{
+    return m_pSetCallBack(cb);
+}

+ 6 - 1
show1/LHTransmitterSwitchAPI/lhtransmitterswitchapi.h

@@ -11,6 +11,9 @@ struct InitData
     QString serverKey;
 };
 
+/* 回调函数 */
+using trackCallBack = void(*)(int actionID, QString strMemo);
+
 class LHTransmitterSwitchAPI
 {
     using pInit = int(*)(const InitData*);
@@ -19,6 +22,7 @@ class LHTransmitterSwitchAPI
     using pGetExecPlanFromEQM = int(*)();
     using pSaveExecPlanToEQM = int(*)();
     using pRelease = int(*)();
+    using pSetCallBack = int(*)(trackCallBack);
 
 public:
     LHTransmitterSwitchAPI();
@@ -33,6 +37,7 @@ public:
     int DoGetExecPlanFromEQM();
     int DoSaveExecPlanToEQM();
     int DoRelease();
+    int DoSetCallBack(trackCallBack cb);
 
 private:
     pInit m_pInit = nullptr;
@@ -41,7 +46,7 @@ private:
     pGetExecPlanFromEQM m_pGetExecPlanFromEQM = nullptr;
     pSaveExecPlanToEQM m_pSaveExecPlanToEQM = nullptr;
     pRelease m_pRelease = nullptr;
-
+    pSetCallBack m_pSetCallBack = nullptr;
 };
 
 #endif /* LHTRANSMITTERSWITCHAPI_H */

+ 7 - 0
show1/widget.cpp

@@ -39,6 +39,7 @@ Widget::Widget(QWidget *parent) :
     m_tSwitch->DoInit(&initData);
     m_tSwitch->DoCreateWindow(1, ui->widget_content);
     // m_tSwitch->DoGetExecPlanFromEQM();
+    m_tSwitch->DoSetCallBack(trackCallBack);
 
     m_style = 1;
     // m_tSwitch->setWebAPIInfo("http://192.1.3.133:31000/v6/", "2e36b53ccd2a433b9a803b98d683ed91", "TMS");
@@ -132,3 +133,9 @@ void Widget::on_pBtn_light_dark_clicked()
 //     DeviceContainer.addDevice(devInfo);
     
 // }
+
+/* 回调函数 */
+void Widget::trackCallBack(int actionID, QString strMemo)
+{
+    SPDLOG_INFO("actionID: {}, strMemo: {}", actionID, strMemo.toStdString());
+}

+ 3 - 1
show1/widget.h

@@ -30,7 +30,9 @@ private slots:
 
 private:
     /* 添加测试用的设备信息 */
-    void addTestDevice();
+    // void addTestDevice();
+    /* 回调函数 */
+    static void trackCallBack(int actionID, QString strMemo);
 
 private:
     Ui::Widget *ui;