X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircevent.cpp;h=797f453831a474760ccbaa3b3d7f60823ee55090;hp=9757c287c443a1a582a900f27efd39d393846b70;hb=8582c2ad5708a1972c85bea1cf8d81ad3ece4814;hpb=fdfd62334f728bd05470c5191194d55027fec86e diff --git a/src/common/ircevent.cpp b/src/common/ircevent.cpp index 9757c287..797f4538 100644 --- a/src/common/ircevent.cpp +++ b/src/common/ircevent.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,71 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "ircevent.h" + +Event *IrcEvent::create(EventManager::EventType type, QVariantMap &map, Network *network) +{ + if ((type & ~EventManager::IrcEventNumericMask) == EventManager::IrcEventNumeric) + return new IrcEventNumeric(type, map, network); + + if ((type & EventManager::EventGroupMask) != EventManager::IrcEvent) + return nullptr; + + switch (type) { + case EventManager::IrcEventRawPrivmsg: + case EventManager::IrcEventRawNotice: + return new IrcEventRawMessage(type, map, network); + + default: + return new IrcEvent(type, map, network); + } +} + + +IrcEvent::IrcEvent(EventManager::EventType type, QVariantMap &map, Network *network) + : NetworkEvent(type, map, network) +{ + _prefix = map.take("prefix").toString(); + _params = map.take("params").toStringList(); +} + + +void IrcEvent::toVariantMap(QVariantMap &map) const +{ + NetworkEvent::toVariantMap(map); + map["prefix"] = prefix(); + map["params"] = params(); +} + + +IrcEventNumeric::IrcEventNumeric(EventManager::EventType type, QVariantMap &map, Network *network) + : IrcEvent(type, map, network) +{ + _number = map.take("number").toUInt(); + _target = map.take("target").toString(); +} + + +void IrcEventNumeric::toVariantMap(QVariantMap &map) const +{ + IrcEvent::toVariantMap(map); + map["number"] = number(); + map["target"] = target(); +} + + +IrcEventRawMessage::IrcEventRawMessage(EventManager::EventType type, QVariantMap &map, Network *network) + : IrcEvent(type, map, network) +{ + _rawMessage = map.take("rawMessage").toByteArray(); +} + + +void IrcEventRawMessage::toVariantMap(QVariantMap &map) const +{ + IrcEvent::toVariantMap(map); + map["rawMessage"] = rawMessage(); +}