/***************************************************************************
- * Copyright (C) 2005-2010 by the Quassel Project *
+ * Copyright (C) 2005-2016 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 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 "messageevent.h"
+Event *MessageEvent::create(EventManager::EventType type, QVariantMap &map, Network *network)
+{
+ if (type == EventManager::MessageEvent)
+ return new MessageEvent(type, map, network);
+
+ return 0;
+}
+
MessageEvent::MessageEvent(Message::Type msgType, Network *net, const QString &msg, const QString &sender, const QString &target,
- Message::Flags flags, const QDateTime ×tamp)
+ Message::Flags flags, const QDateTime ×tamp)
: NetworkEvent(EventManager::MessageEvent, net),
- _msgType(msgType),
- _text(msg),
- _sender(sender),
- _target(target),
- _msgFlags(flags)
+ _msgType(msgType),
+ _text(msg),
+ _sender(sender),
+ _target(target),
+ _msgFlags(flags)
{
- IrcChannel *channel = network()->ircChannel(_target);
- if(!channel) {
- if(!_target.isEmpty() && network()->prefixes().contains(_target.at(0)))
- _target = _target.mid(1);
+ IrcChannel *channel = network()->ircChannel(_target);
+ if (!channel) {
+ if (!_target.isEmpty() && network()->prefixes().contains(_target.at(0)))
+ _target = _target.mid(1);
- if(_target.startsWith('$') || _target.startsWith('#'))
- _target = nickFromMask(sender);
- }
+ if (_target.startsWith('$') || _target.startsWith('#'))
+ _target = nickFromMask(sender);
+ }
- _bufferType = bufferTypeByTarget(_target);
+ _bufferType = bufferTypeByTarget(_target);
- setTimestamp(timestamp);
+ if (timestamp.isValid())
+ setTimestamp(timestamp);
+ else
+ setTimestamp(QDateTime::currentDateTime());
}
-BufferInfo::Type MessageEvent::bufferTypeByTarget(const QString &target) const {
- if(target.isEmpty())
- return BufferInfo::StatusBuffer;
- if(network()->isChannelName(target))
- return BufferInfo::ChannelBuffer;
+MessageEvent::MessageEvent(EventManager::EventType type, QVariantMap &map, Network *network)
+ : NetworkEvent(type, map, network)
+{
+ _msgType = static_cast<Message::Type>(map.take("messageType").toInt());
+ _msgFlags = static_cast<Message::Flags>(map.take("messageFlags").toInt());
+ _bufferType = static_cast<BufferInfo::Type>(map.take("bufferType").toInt());
+ _text = map.take("text").toString();
+ _sender = map.take("sender").toString();
+ _target = map.take("target").toString();
+}
+
- return BufferInfo::QueryBuffer;
+void MessageEvent::toVariantMap(QVariantMap &map) const
+{
+ NetworkEvent::toVariantMap(map);
+ map["messageType"] = msgType();
+ map["messageFlags"] = (int)msgFlags();
+ map["bufferType"] = bufferType();
+ map["text"] = text();
+ map["sender"] = sender();
+ map["target"] = target();
}
+
+BufferInfo::Type MessageEvent::bufferTypeByTarget(const QString &target) const
+{
+ if (target.isEmpty())
+ return BufferInfo::StatusBuffer;
+
+ if (network()->isChannelName(target))
+ return BufferInfo::ChannelBuffer;
+
+ return BufferInfo::QueryBuffer;
+}