From: Manuel Nickschas Date: Sat, 17 Mar 2012 13:50:55 +0000 (+0100) Subject: Make the EventType meta enum and related accessors static X-Git-Tag: 0.9-beta1~70 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=3456106b07bfc3000e50df9322ddefd4f872e0fb Make the EventType meta enum and related accessors static That way, we can use methods like eventTypeByName() without having an object instance. --- 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);