-void EventManager::registerObject(QObject *object, Priority priority, const QString &methodPrefix) {
- int eventEnumIndex = metaObject()->indexOfEnumerator("EventType");
- Q_ASSERT(eventEnumIndex >= 0);
- QMetaEnum eventEnum = metaObject()->enumerator(eventEnumIndex);
+EventManager::~EventManager() {
+ // pending events won't be delivered anymore, but we do need to delete them
+ qDeleteAll(_eventQueue);
+}
+
+QMetaEnum EventManager::eventEnum() const {
+ if(!_enum.isValid()) {
+ int eventEnumIndex = metaObject()->indexOfEnumerator("EventType");
+ Q_ASSERT(eventEnumIndex >= 0);
+ _enum = metaObject()->enumerator(eventEnumIndex);
+ Q_ASSERT(_enum.isValid());
+ }
+ return _enum;
+}
+
+EventManager::EventType EventManager::eventTypeByName(const QString &name) const {
+ int val = eventEnum().keyToValue(name.toLatin1());
+ return (val == -1) ? Invalid : static_cast<EventType>(val);
+}
+
+EventManager::EventType EventManager::eventGroupByName(const QString &name) const {
+ EventType type = eventTypeByName(name);
+ return type == Invalid? Invalid : static_cast<EventType>(type & EventGroupMask);
+}
+
+QString EventManager::enumName(EventType type) const {
+ return eventEnum().valueToKey(type);
+}