#include <QObject>
#include "ircevent.h"
+#include "message.h"
+
+class CoreSession;
+class MessageEvent;
//! Generates user-visible MessageEvents from incoming IrcEvents
Q_OBJECT
public:
- EventStringifier(QObject *parent = 0);
+ explicit EventStringifier(CoreSession *parent);
+
+ inline CoreSession *coreSession() const { return _coreSession; }
+
+ MessageEvent *createMessageEvent(NetworkEvent *event,
+ Message::Type msgType,
+ const QString &msg,
+ const QString &sender = QString(),
+ const QString &target = QString(),
+ Message::Flags msgFlags = Message::None);
+
+ //! Handle generic numeric events
+ Q_INVOKABLE void processIrcEventNumeric(IrcEventNumeric *event);
+
+ Q_INVOKABLE void processIrcEventInvite(IrcEvent *event);
+ Q_INVOKABLE void earlyProcessIrcEventKick(IrcEvent *event);
+ Q_INVOKABLE void earlyProcessIrcEventNick(IrcEvent *event);
+ Q_INVOKABLE void earlyProcessIrcEventPart(IrcEvent *event);
+ Q_INVOKABLE void processIrcEventPong(IrcEvent *event);
+ Q_INVOKABLE void processIrcEventTopic(IrcEvent *event);
+
+ Q_INVOKABLE void processIrcEvent301(IrcEvent *event); // RPL_AWAY
+ Q_INVOKABLE void processIrcEvent305(IrcEvent *event); // RPL_UNAWAY
+ Q_INVOKABLE void processIrcEvent306(IrcEvent *event); // RPL_NOWAWAY
+ Q_INVOKABLE void processIrcEvent311(IrcEvent *event); // RPL_WHOISUSER
+ Q_INVOKABLE void processIrcEvent312(IrcEvent *event); // RPL_WHOISSERVER
+ Q_INVOKABLE void processIrcEvent314(IrcEvent *event); // RPL_WHOWASUSER
+ Q_INVOKABLE void processIrcEvent315(IrcEvent *event); // RPL_ENDOFWHO
+ Q_INVOKABLE void processIrcEvent317(IrcEvent *event); // RPL_WHOISIDLE
+ Q_INVOKABLE void processIrcEvent318(IrcEvent *event); // RPL_ENDOFWHOIS
+ Q_INVOKABLE void processIrcEvent319(IrcEvent *event); // RPL_WHOISCHANNELS
+ Q_INVOKABLE void processIrcEvent330(IrcEvent *event); // RPL_WHOISACCOUNT (quakenet/snircd/undernet)
+
+ // Q_INVOKABLE void processIrcEvent(IrcEvent *event);
+
+public slots:
+ //! Creates and sends a MessageEvent
+ void displayMsg(NetworkEvent *event,
+ Message::Type msgType,
+ const QString &msg,
+ const QString &sender = QString(),
+ const QString &target = QString(),
+ Message::Flags msgFlags = Message::None);
private:
+ bool checkParamCount(IrcEvent *event, int minParams);
+ void sendMessageEvent(MessageEvent *event);
+
+ CoreSession *_coreSession;
+ bool _whois;
};