X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkevent.cpp;h=ec8947b0ef1df65dc97df19bc693d776f410579c;hp=fa1184be7d5eb8092fa458134f7628977f93776f;hb=e3c42d072b2b8f39c8c9ea44dfc3bded87ae43b0;hpb=85fb228631cfb087ce80f4b778fae5f1c3877008 diff --git a/src/common/networkevent.cpp b/src/common/networkevent.cpp index fa1184be..ec8947b0 100644 --- a/src/common/networkevent.cpp +++ b/src/common/networkevent.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2010 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,90 @@ * 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 "networkevent.h" + +Event *NetworkEvent::create(EventManager::EventType type, QVariantMap &map, Network *network) +{ + switch (type) { + case EventManager::NetworkIncoming: + return new NetworkDataEvent(type, map, network); + + case EventManager::NetworkConnecting: + case EventManager::NetworkInitializing: + case EventManager::NetworkInitialized: + case EventManager::NetworkReconnecting: + case EventManager::NetworkDisconnecting: + case EventManager::NetworkDisconnected: + return new NetworkConnectionEvent(type, map, network); + + case EventManager::NetworkSplitJoin: + case EventManager::NetworkSplitQuit: + return new NetworkSplitEvent(type, map, network); + + default: + return 0; + } +} + + +NetworkEvent::NetworkEvent(EventManager::EventType type, QVariantMap &map, Network *network) + : Event(type, map) + , _network(network) +{ +} + + +void NetworkEvent::toVariantMap(QVariantMap &map) const +{ + Event::toVariantMap(map); + map["network"] = networkId().toInt(); +} + + +NetworkDataEvent::NetworkDataEvent(EventManager::EventType type, QVariantMap &map, Network *network) + : NetworkEvent(type, map, network) +{ + _data = map.take("data").toByteArray(); +} + + +void NetworkDataEvent::toVariantMap(QVariantMap &map) const +{ + NetworkEvent::toVariantMap(map); + map["data"] = data(); +} + + +NetworkConnectionEvent::NetworkConnectionEvent(EventManager::EventType type, QVariantMap &map, Network *network) + : NetworkEvent(type, map, network) +{ + _state = static_cast(map.take("state").toInt()); // FIXME: check enum plausibility +} + + +void NetworkConnectionEvent::toVariantMap(QVariantMap &map) const +{ + NetworkEvent::toVariantMap(map); + map["state"] = connectionState(); +} + + +NetworkSplitEvent::NetworkSplitEvent(EventManager::EventType type, QVariantMap &map, Network *network) + : NetworkEvent(type, map, network) +{ + _channel = map.take("channel").toString(); + _users = map.take("users").toStringList(); + _quitMsg = map.take("quitMessage").toString(); +} + + +void NetworkSplitEvent::toVariantMap(QVariantMap &map) const +{ + NetworkEvent::toVariantMap(map); + map["channel"] = channel(); + map["users"] = users(); + map["quitMessage"] = quitMessage(); +}