X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircevent.h;h=a9d7880c2af3912bd3926701a1e7c9e7ab8c56b2;hp=6704013de8cef0194654e833f3a5b6479144efb9;hb=9dfc807d8f60135976d4ea0ed31022304fad8f4c;hpb=6097f67231950c4c22845735db8b997a844fec48 diff --git a/src/common/ircevent.h b/src/common/ircevent.h index 6704013d..a9d7880c 100644 --- a/src/common/ircevent.h +++ b/src/common/ircevent.h @@ -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,68 +15,128 @@ * 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. * ***************************************************************************/ #ifndef IRCEVENT_H #define IRCEVENT_H #include "networkevent.h" +#include "util.h" -class IrcEvent : public NetworkEvent { +class IrcEvent : public NetworkEvent +{ public: - explicit IrcEvent(EventManager::EventType type, Network *network, const QString &prefix, const QStringList ¶ms = QStringList()) - : NetworkEvent(type, network), - _prefix(prefix), - _params(params) - {} + explicit IrcEvent(EventManager::EventType type, Network *network, const QString &prefix, const QStringList ¶ms = QStringList()) + : NetworkEvent(type, network), + _prefix(prefix), + _params(params) + {} - inline QString prefix() const { return _prefix; } - inline void setPrefix(const QString &prefix) { _prefix = prefix; } + inline QString prefix() const { return _prefix; } + inline void setPrefix(const QString &prefix) { _prefix = prefix; } - inline QStringList params() const { return _params; } - inline void setParams(const QStringList ¶ms) { _params = params; } + inline QString nick() const { return nickFromMask(prefix()); } + + inline QStringList params() const { return _params; } + inline void setParams(const QStringList ¶ms) { _params = params; } + + static Event *create(EventManager::EventType type, QVariantMap &map, Network *network); + +protected: + explicit IrcEvent(EventManager::EventType type, QVariantMap &map, Network *network); + void toVariantMap(QVariantMap &map) const; + + virtual inline QString className() const { return "IrcEvent"; } + virtual inline void debugInfo(QDebug &dbg) const + { + NetworkEvent::debugInfo(dbg); + dbg << ", prefix = " << qPrintable(prefix()) + << ", params = " << params(); + } -private: - QString _prefix; - QStringList _params; +private: + QString _prefix; + QStringList _params; }; -class IrcEventNumeric : public IrcEvent { + +class IrcEventNumeric : public IrcEvent +{ public: - explicit IrcEventNumeric(uint number, Network *network, const QString &prefix, const QString &target, const QStringList ¶ms = QStringList()) - : IrcEvent(EventManager::IrcEventNumeric, network, prefix, params), - _number(number), - _target(target) - {} + explicit IrcEventNumeric(uint number, Network *network, const QString &prefix, const QString &target, const QStringList ¶ms = QStringList()) + : IrcEvent(EventManager::IrcEventNumeric, network, prefix, params), + _number(number), + _target(target) + {} + + inline uint number() const { return _number; } + + inline QString target() const { return _target; } + inline void setTarget(const QString &target) { _target = target; } - inline uint number() const { return _number; } +protected: + explicit IrcEventNumeric(EventManager::EventType type, QVariantMap &map, Network *network); + void toVariantMap(QVariantMap &map) const; + + virtual inline QString className() const { return "IrcEventNumeric"; } + virtual inline void debugInfo(QDebug &dbg) const + { + dbg << ", num = " << number(); + NetworkEvent::debugInfo(dbg); + dbg << ", target = " << qPrintable(target()) + << ", prefix = " << qPrintable(prefix()) + << ", params = " << params(); + } - inline QString target() const { return _target; } - inline void setTarget(const QString &target) { _target = target; } private: - uint _number; - QString _target; + uint _number; + QString _target; + friend class IrcEvent; }; -class IrcEventRawMessage : public IrcEvent { + +class IrcEventRawMessage : public IrcEvent +{ public: - explicit IrcEventRawMessage(EventManager::EventType type, Network *network, const QString &prefix, const QString &target, const QByteArray &rawMessage) - : IrcEvent(type, network, prefix, QStringList() << target), - _rawMessage(rawMessage) - {} + explicit inline IrcEventRawMessage(EventManager::EventType type, Network *network, + const QByteArray &rawMessage, const QString &prefix, const QString &target, + const QDateTime ×tamp = QDateTime()) + : IrcEvent(type, network, prefix, QStringList() << target), + _rawMessage(rawMessage) + { + setTimestamp(timestamp); + } + + + inline QString target() const { return params().at(0); } + inline void setTarget(const QString &target) { setParams(QStringList() << target); } - inline QString target() const { return params().at(0); } - inline void setTarget(const QString &target) { setParams(QStringList() << target); } + inline QByteArray rawMessage() const { return _rawMessage; } + inline void setRawMessage(const QByteArray &rawMessage) { _rawMessage = rawMessage; } + +protected: + explicit IrcEventRawMessage(EventManager::EventType type, QVariantMap &map, Network *network); + void toVariantMap(QVariantMap &map) const; + + virtual inline QString className() const { return "IrcEventRawMessage"; } + virtual inline void debugInfo(QDebug &dbg) const + { + NetworkEvent::debugInfo(dbg); + dbg << ", target = " << qPrintable(target()) + << ", prefix = " << qPrintable(prefix()) + << ", msg = " << rawMessage(); + } - inline QByteArray rawMessage() const { return _rawMessage; } - inline void setRawMessage(const QByteArray &rawMessage) { _rawMessage = rawMessage; } private: - QByteArray _rawMessage; + QByteArray _rawMessage; + + friend class IrcEvent; }; + #endif