126 lines
2.8 KiB
C
126 lines
2.8 KiB
C
|
#pragma once
|
|||
|
#include <qwidget.h>
|
|||
|
#include <qmenu.h>
|
|||
|
#include "json.hpp"
|
|||
|
#include "WebEngineView.h"
|
|||
|
class WebEventDispatch;
|
|||
|
class ShareEventModule;
|
|||
|
using json = nlohmann::json;
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
class WEBQT_EXPORT EventModule :public QObject
|
|||
|
{
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
* @param name <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WEB<EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
EventModule(std::string name);
|
|||
|
virtual ~EventModule();
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
const std::string getName();
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param msg <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void send(const std::string& eventName, const json& msg);
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void send(const std::string& eventName);
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param msg ģ<EFBFBD>廯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
template<class T>
|
|||
|
void send(const std::string& eventName, T msg) {
|
|||
|
json j;
|
|||
|
j["event"] = eventName;
|
|||
|
j["data"] = msg;
|
|||
|
sentToWeb(j);
|
|||
|
}
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>㲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param msg <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void broadcast(const std::string& eventName, const json& msg);
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>㲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void broadcast(const std::string& eventName);
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>㲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>WEB<EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param msg ģ<EFBFBD>廯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
template<class T>
|
|||
|
void broadcast(const std::string& eventName, T msg) {
|
|||
|
json j;
|
|||
|
j["event"] = eventName;
|
|||
|
j["data"] = msg;
|
|||
|
broadcastToWeb(j);
|
|||
|
}
|
|||
|
/**
|
|||
|
* @brief Ϊ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
* @param shareEventModule <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void addShareEventModule(ShareEventModule* shareEventModule);
|
|||
|
/**
|
|||
|
* @brief <EFBFBD>Ҽ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param request <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
* @param menu <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
virtual void contextMenu(const json& request, QMenu* menu);
|
|||
|
/**
|
|||
|
* @brief ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param eventName <EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param parameter <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>true<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>false
|
|||
|
*/
|
|||
|
virtual bool onMessage(const std::string& eventName, json& parameter);
|
|||
|
private:
|
|||
|
void sentToWeb(json& msg);
|
|||
|
void broadcastToWeb(json& msg);
|
|||
|
|
|||
|
std::list<ShareEventModule*> _shareEventModule;
|
|||
|
std::string _name;
|
|||
|
WebEventDispatch* _parent;
|
|||
|
friend class WebEventDispatch;
|
|||
|
};
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
class WEBQT_EXPORT ShareEventModule :public EventModule {
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
ShareEventModule();
|
|||
|
virtual ~ShareEventModule();
|
|||
|
private:
|
|||
|
void detach();
|
|||
|
int _ref;
|
|||
|
friend class EventModule;
|
|||
|
|
|||
|
};
|
|||
|
/**
|
|||
|
* @brief
|
|||
|
*/
|
|||
|
class WEBQT_EXPORT SignalEventModule :public EventModule {
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
SignalEventModule(std::string name);
|
|||
|
virtual ~SignalEventModule();
|
|||
|
signals:
|
|||
|
bool onmessage(const std::string&, json&);
|
|||
|
protected:
|
|||
|
bool onMessage(const std::string& eventName, json& parameter);
|
|||
|
};
|