From 3456106b07bfc3000e50df9322ddefd4f872e0fb Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sat, 17 Mar 2012 14:50:55 +0100 Subject: [PATCH] Make the EventType meta enum and related accessors static That way, we can use methods like eventTypeByName() without having an object instance. --- src/common/eventmanager.cpp | 18 ++++++++++++------ src/common/eventmanager.h | 12 ++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/common/eventmanager.cpp b/src/common/eventmanager.cpp index 13614f38..03e891f4 100644 --- a/src/common/eventmanager.cpp +++ b/src/common/eventmanager.cpp @@ -44,27 +44,31 @@ EventManager::EventManager(QObject *parent) : QObject(parent) { } -QMetaEnum EventManager::eventEnum() const { +QMetaEnum EventManager::eventEnum() { if(!_enum.isValid()) { - int eventEnumIndex = metaObject()->indexOfEnumerator("EventType"); + int eventEnumIndex = staticMetaObject.indexOfEnumerator("EventType"); Q_ASSERT(eventEnumIndex >= 0); - _enum = metaObject()->enumerator(eventEnumIndex); + _enum = staticMetaObject.enumerator(eventEnumIndex); Q_ASSERT(_enum.isValid()); } return _enum; } -EventManager::EventType EventManager::eventTypeByName(const QString &name) const { +EventManager::EventType EventManager::eventTypeByName(const QString &name) { int val = eventEnum().keyToValue(name.toLatin1()); return (val == -1) ? Invalid : static_cast(val); } -EventManager::EventType EventManager::eventGroupByName(const QString &name) const { +EventManager::EventType EventManager::eventGroupByName(const QString &name) { EventType type = eventTypeByName(name); return type == Invalid? Invalid : static_cast(type & EventGroupMask); } -QString EventManager::enumName(EventType type) const { +QString EventManager::enumName(EventType type) { + return eventEnum().valueToKey(type); +} + +QString EventManager::enumName(int type) { return eventEnum().valueToKey(type); } @@ -295,3 +299,5 @@ void EventManager::insertFilters(const QList &newFilters, QHash _eventQueue; + static QMetaEnum _enum; }; Q_DECLARE_OPERATORS_FOR_FLAGS(EventManager::EventFlags); -- 2.20.1