~ubuntu-branches/ubuntu/saucy/quassel/saucy

« back to all changes in this revision

Viewing changes to src/core/eventstringifier.h

  • Committer: Package Import Robot
  • Author(s): Scott Kitterman
  • Date: 2012-02-14 18:38:55 UTC
  • mfrom: (1.1.46)
  • Revision ID: package-import@ubuntu.com-20120214183855-ak8af7n6qweqy3f0
Tags: 0.8~beta1-0ubuntu1
* New upstream beta release
  - Update quasselcore man page for new oidentd option 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *   Copyright (C) 2005-2012 by the Quassel Project                        *
 
3
 *   devel@quassel-irc.org                                                 *
 
4
 *                                                                         *
 
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.                                           *
 
9
 *                                                                         *
 
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.                          *
 
14
 *                                                                         *
 
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
 ***************************************************************************/
 
20
 
 
21
#ifndef EVENTSTRINGIFIER_H
 
22
#define EVENTSTRINGIFIER_H
 
23
 
 
24
#include "basichandler.h"
 
25
#include "ircevent.h"
 
26
#include "message.h"
 
27
 
 
28
class CoreSession;
 
29
class CtcpEvent;
 
30
class MessageEvent;
 
31
 
 
32
//! Generates user-visible MessageEvents from incoming IrcEvents
 
33
 
 
34
/* replaces the string-generating parts of the old IrcServerHandler */
 
35
class EventStringifier : public BasicHandler {
 
36
  Q_OBJECT
 
37
 
 
38
public:
 
39
  explicit EventStringifier(CoreSession *parent);
 
40
 
 
41
  inline CoreSession *coreSession() const { return _coreSession; }
 
42
 
 
43
  MessageEvent *createMessageEvent(NetworkEvent *event,
 
44
                                   Message::Type msgType,
 
45
                                   const QString &msg,
 
46
                                   const QString &sender = QString(),
 
47
                                   const QString &target = QString(),
 
48
                                   Message::Flags msgFlags = Message::None);
 
49
 
 
50
  // legacy handlers
 
51
  Q_INVOKABLE void processNetworkSplitJoin(NetworkSplitEvent *event);
 
52
  Q_INVOKABLE void processNetworkSplitQuit(NetworkSplitEvent *event);
 
53
 
 
54
  //! Handle generic numeric events
 
55
  Q_INVOKABLE void processIrcEventNumeric(IrcEventNumeric *event);
 
56
 
 
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);
 
66
 
 
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
 
93
 
 
94
  // Q_INVOKABLE void processIrcEvent(IrcEvent *event);
 
95
 
 
96
  /* CTCP handlers */
 
97
  Q_INVOKABLE void processCtcpEvent(CtcpEvent *event);
 
98
 
 
99
  Q_INVOKABLE void handleCtcpAction(CtcpEvent *event);
 
100
  Q_INVOKABLE void handleCtcpPing(CtcpEvent *event);
 
101
  Q_INVOKABLE void defaultHandler(const QString &cmd, CtcpEvent *event);
 
102
 
 
103
public slots:
 
104
  //! Creates and sends a MessageEvent
 
105
  void displayMsg(NetworkEvent *event,
 
106
                  Message::Type msgType,
 
107
                  const QString &msg,
 
108
                  const QString &sender = QString(),
 
109
                  const QString &target = QString(),
 
110
                  Message::Flags msgFlags = Message::None);
 
111
 
 
112
signals:
 
113
  void newMessageEvent(Event *event);
 
114
 
 
115
private:
 
116
  bool checkParamCount(IrcEvent *event, int minParams);
 
117
 
 
118
  CoreSession *_coreSession;
 
119
  bool _whois;
 
120
 
 
121
};
 
122
 
 
123
#endif