X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Feventmanager.cpp;h=03c04df3460337cd5e189c5d05e75238a631e0a6;hb=61c8d84d1c849373e0f115dc748ed45cff95287d;hp=2709b557fd338d718ee866af6fd59824f3b857fb;hpb=88b350153eb364853e75d237d3eed2dfaf839d59;p=quassel.git diff --git a/src/common/eventmanager.cpp b/src/common/eventmanager.cpp index 2709b557..03c04df3 100644 --- a/src/common/eventmanager.cpp +++ b/src/common/eventmanager.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2010 by the Quassel Project * + * Copyright (C) 2005-2012 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -44,30 +44,41 @@ 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); +} + +Event *EventManager::createEvent(const QVariantMap &map) { + QVariantMap m = map; + + Network *net = networkById(m.take("network").toInt()); + return Event::fromVariantMap(m, net); +} + /* NOTE: Registering and calling handlers works fine even if they specify a subclass of Event as their parameter. However, this most probably is a result from a reinterpret_cast somewhere deep inside Qt, so there is *no* @@ -295,3 +306,5 @@ void EventManager::insertFilters(const QList &newFilters, QHash