56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
#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()));
|
|
}
|
|
};
|