DiagramDesigner/diagramCavas/include/evetConfig/eventExecutor.h

56 lines
1.7 KiB
C
Raw Normal View History

2026-04-10 17:43:35 +08:00
#pragma once
/****************************
*
* *************************/
#include "eventHandler.h"
#include "propertyType/configEventData.h"
#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h"
#include "evetConfig/panelVisibilityEventHandler.h"
#include "evetConfig/scriptEventHandler.h"
#include "evetConfig/variableSetEventHandler.h"
class EventExecutor {
private:
QVector<QSharedPointer<EventHandler>> m_handlers;
public:
EventExecutor() {
// 注册默认处理器
registerDefaultHandlers();
}
// 注册处理器
void registerHandler(QSharedPointer<EventHandler> handler) {
m_handlers.append(handler);
}
// 执行事件
void execute(const EventData& event, GraphicsFunctionModelItem* item) {
for (const auto& handler : m_handlers) {
if (handler->canHandle(event.type)) {
handler->handle(event, item);
return;
}
}
// 如果没有找到处理器,使用默认处理
qWarning() << "No handler found for event type:" << event.type;
}
// 获取支持的处理器名称
QStringList supportedHandlers() const {
QStringList names;
for (const auto& handler : m_handlers) {
names.append(handler->handlerName());
}
return names;
}
private:
void registerDefaultHandlers() {
registerHandler(QSharedPointer<EventHandler>(new PanelVisibilityEventHandler()));
registerHandler(QSharedPointer<EventHandler>(new VariableSetEventHandler()));
registerHandler(QSharedPointer<EventHandler>(new ScriptEventHandler()));
}
};