DiagramDesigner/diagramCommunication/include/uiCommunicationBus.h

49 lines
1.3 KiB
C
Raw Normal View History

2025-12-12 17:46:37 +08:00
// uiCommunicationBus.h
#pragma once
#include "export.hpp"
#include <QObject>
#include <QMap>
#include <QVariant>
#include <QMutex>
// UI通信总线
class DIAGRAM_DESIGNER_PUBLIC UiCommunicationBus : public QObject
{
Q_OBJECT
public:
static UiCommunicationBus* instance();
// 发送HTTP请求
void sendHttpRequest(const QString& endpoint, const QVariant& data = QVariant());
// 发送HTTP请求无回复
void sendHttpRequestNoReply(const QString& endpoint, const QVariant& data = QVariant());
// 向UI发送数据
void sendToUi(const QString& uiId, const QString& action, const QVariant& data);
// 广播到所有UI
void broadcastToUis(const QString& action, const QVariant& data);
// 注册/注销UI
void registerUi(const QString& uiId, QObject* uiObject);
void unregisterUi(const QString& uiId);
signals:
void httpDataProcessed(const QString& type,const QVariant& data); //发送分拣过的数据给外部
void websocketDataProcessed(const QVariant& data);
private:
UiCommunicationBus(QObject* parent = nullptr);
// 处理HTTP响应
void onHttpDataReceived(const QByteArray& data);
// 处理WebSocket数据
void onWebSocketDataReceived(const QByteArray& data);
// UI注册表
QMap<QString, QObject*> m_uiObjects;
mutable QMutex m_mutex;
};