1
/***************************************************************************
2
* Copyright (C) 2005-2012 by the Quassel Project *
3
* devel@quassel-irc.org *
5
* This program is free software; you can redistribute it and/or modify *
6
* it under the terms of the GNU General Public License as published by *
7
* the Free Software Foundation; either version 2 of the License, or *
8
* (at your option) version 3. *
10
* This program is distributed in the hope that it will be useful, *
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13
* GNU General Public License for more details. *
15
* You should have received a copy of the GNU General Public License *
16
* along with this program; if not, write to the *
17
* Free Software Foundation, Inc., *
18
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19
***************************************************************************/
21
#ifndef EVENTSTRINGIFIER_H
22
#define EVENTSTRINGIFIER_H
24
#include "basichandler.h"
32
//! Generates user-visible MessageEvents from incoming IrcEvents
34
/* replaces the string-generating parts of the old IrcServerHandler */
35
class EventStringifier : public BasicHandler {
39
explicit EventStringifier(CoreSession *parent);
41
inline CoreSession *coreSession() const { return _coreSession; }
43
MessageEvent *createMessageEvent(NetworkEvent *event,
44
Message::Type msgType,
46
const QString &sender = QString(),
47
const QString &target = QString(),
48
Message::Flags msgFlags = Message::None);
51
Q_INVOKABLE void processNetworkSplitJoin(NetworkSplitEvent *event);
52
Q_INVOKABLE void processNetworkSplitQuit(NetworkSplitEvent *event);
54
//! Handle generic numeric events
55
Q_INVOKABLE void processIrcEventNumeric(IrcEventNumeric *event);
57
Q_INVOKABLE void processIrcEventInvite(IrcEvent *event);
58
Q_INVOKABLE void processIrcEventJoin(IrcEvent *event);
59
Q_INVOKABLE void processIrcEventKick(IrcEvent *event);
60
Q_INVOKABLE void processIrcEventMode(IrcEvent *event);
61
Q_INVOKABLE void processIrcEventNick(IrcEvent *event);
62
Q_INVOKABLE void processIrcEventPart(IrcEvent *event);
63
Q_INVOKABLE void processIrcEventPong(IrcEvent *event);
64
Q_INVOKABLE void processIrcEventQuit(IrcEvent *event);
65
Q_INVOKABLE void processIrcEventTopic(IrcEvent *event);
67
Q_INVOKABLE void processIrcEvent005(IrcEvent *event); // RPL_ISUPPORT
68
Q_INVOKABLE void processIrcEvent301(IrcEvent *event); // RPL_AWAY
69
Q_INVOKABLE void processIrcEvent305(IrcEvent *event); // RPL_UNAWAY
70
Q_INVOKABLE void processIrcEvent306(IrcEvent *event); // RPL_NOWAWAY
71
Q_INVOKABLE void processIrcEvent311(IrcEvent *event); // RPL_WHOISUSER
72
Q_INVOKABLE void processIrcEvent312(IrcEvent *event); // RPL_WHOISSERVER
73
Q_INVOKABLE void processIrcEvent314(IrcEvent *event); // RPL_WHOWASUSER
74
Q_INVOKABLE void processIrcEvent315(IrcEvent *event); // RPL_ENDOFWHO
75
Q_INVOKABLE void processIrcEvent317(IrcEvent *event); // RPL_WHOISIDLE
76
Q_INVOKABLE void processIrcEvent318(IrcEvent *event); // RPL_ENDOFWHOIS
77
Q_INVOKABLE void processIrcEvent319(IrcEvent *event); // RPL_WHOISCHANNELS
78
Q_INVOKABLE void processIrcEvent322(IrcEvent *event); // RPL_LIST
79
Q_INVOKABLE void processIrcEvent323(IrcEvent *event); // RPL_LISTEND
80
Q_INVOKABLE void processIrcEvent324(IrcEvent *event); // RPL_CHANNELMODEIS
81
Q_INVOKABLE void processIrcEvent328(IrcEvent *event); // RPL_??? (channel creation time)
82
Q_INVOKABLE void processIrcEvent329(IrcEvent *event); // RPL_??? (channel homepage)
83
Q_INVOKABLE void processIrcEvent330(IrcEvent *event); // RPL_WHOISACCOUNT (quakenet/snircd/undernet)
84
Q_INVOKABLE void processIrcEvent331(IrcEvent *event); // RPL_NOTOPIC
85
Q_INVOKABLE void processIrcEvent332(IrcEvent *event); // RPL_TOPIC
86
Q_INVOKABLE void processIrcEvent333(IrcEvent *event); // RPL_??? (topic set by)
87
Q_INVOKABLE void processIrcEvent341(IrcEvent *event); // RPL_INVITING
88
Q_INVOKABLE void processIrcEvent352(IrcEvent *event); // RPL_WHOREPLY
89
Q_INVOKABLE void processIrcEvent369(IrcEvent *event); // RPL_ENDOFWHOWAS
90
Q_INVOKABLE void processIrcEvent432(IrcEvent *event); // ERR_ERRONEUSNICKNAME
91
Q_INVOKABLE void processIrcEvent433(IrcEvent *event); // ERR_NICKNAMEINUSE
92
Q_INVOKABLE void processIrcEvent437(IrcEvent *event); // ERR_UNAVAILRESOURCE
94
// Q_INVOKABLE void processIrcEvent(IrcEvent *event);
97
Q_INVOKABLE void processCtcpEvent(CtcpEvent *event);
99
Q_INVOKABLE void handleCtcpAction(CtcpEvent *event);
100
Q_INVOKABLE void handleCtcpPing(CtcpEvent *event);
101
Q_INVOKABLE void defaultHandler(const QString &cmd, CtcpEvent *event);
104
//! Creates and sends a MessageEvent
105
void displayMsg(NetworkEvent *event,
106
Message::Type msgType,
108
const QString &sender = QString(),
109
const QString &target = QString(),
110
Message::Flags msgFlags = Message::None);
113
void newMessageEvent(Event *event);
116
bool checkParamCount(IrcEvent *event, int minParams);
118
CoreSession *_coreSession;