-void EventManager::registerEventHandler(QList<EventType> events, QObject *object, const char *slot, Priority priority) {
- int methodIndex = object->metaObject()->indexOfMethod(slot);
- if(methodIndex < 0) {
- qWarning() << Q_FUNC_INFO << QString("Slot %1 not found in object %2").arg(slot).arg(object->objectName());
- return;
- }
- Handler handler(object, methodIndex, priority);
- foreach(EventType event, events) {
- registeredHandlers()[event].append(handler);
- qDebug() << "Registered event handler for" << event << "in" << object;
- }
+void EventManager::registerObject(QObject *object, Priority priority, const QString &methodPrefix, const QString &filterPrefix)
+{
+ for (int i = object->metaObject()->methodOffset(); i < object->metaObject()->methodCount(); i++) {
+#if QT_VERSION >= 0x050000
+ QString methodSignature = object->metaObject()->method(i).methodSignature();
+#else
+ QString methodSignature = object->metaObject()->method(i).signature();
+#endif
+
+ int eventType = findEventType(methodSignature, methodPrefix);
+ if (eventType > 0) {
+ Handler handler(object, i, priority);
+ registeredHandlers()[eventType].append(handler);
+ //qDebug() << "Registered event handler for" << methodSignature << "in" << object;
+ }
+ eventType = findEventType(methodSignature, filterPrefix);
+ if (eventType > 0) {
+ Handler handler(object, i, priority);
+ registeredFilters()[eventType].append(handler);
+ //qDebug() << "Registered event filterer for" << methodSignature << "in" << object;
+ }
+ }