Communi  1.1.0
A cross-platform IRC client library written with Qt 4
 All Classes Files Functions Enumerations Enumerator Properties Macros Groups Pages
ircmessage.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2008-2012 J-P Nurmi <jpnurmi@gmail.com>
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
12 * License for more details.
13 */
14 
15 #ifndef IRCMESSAGE_H
16 #define IRCMESSAGE_H
17 
18 #include <IrcGlobal>
19 #include <IrcSender>
20 #include <QtCore/qobject.h>
21 #include <QtCore/qstringlist.h>
22 
23 class IrcCommand;
24 class IrcMessagePrivate;
25 
26 class COMMUNI_EXPORT IrcMessage : public QObject
27 {
28  Q_OBJECT
29  Q_PROPERTY(Type type READ type)
30  Q_PROPERTY(bool own READ isOwn)
31  Q_PROPERTY(bool valid READ isValid)
32  Q_PROPERTY(IrcSender sender READ sender)
33  Q_PROPERTY(QString command READ command)
34  Q_PROPERTY(QStringList parameters READ parameters)
35  Q_ENUMS(Type)
36 
37 public:
38  enum Type
39  {
54  Numeric
55  };
56 
57  Q_INVOKABLE explicit IrcMessage(QObject* parent = 0);
58  virtual ~IrcMessage();
59 
60  Type type() const;
61  IrcSender sender() const;
62  QString command() const;
63  QStringList parameters() const;
64 
65  bool isOwn() const;
66  virtual bool isValid() const;
67 
68  Q_INVOKABLE QByteArray toData() const;
69  Q_INVOKABLE static IrcMessage* fromData(const QByteArray& data, const QByteArray& encoding, QObject* parent = 0);
70 
71  Q_DECL_DEPRECATED QString toString() const;
72  Q_DECL_DEPRECATED static IrcMessage* fromString(const QString& str, QObject* parent = 0);
73 
74  Q_INVOKABLE static IrcMessage* fromCommand(const QString& sender, IrcCommand* command, QObject* parent = 0);
75 
76 protected:
77  QScopedPointer<IrcMessagePrivate> d_ptr;
78  Q_DECLARE_PRIVATE(IrcMessage)
79  Q_DISABLE_COPY(IrcMessage)
80 };
81 
82 class COMMUNI_EXPORT IrcNickMessage : public IrcMessage
83 {
84  Q_OBJECT
85  Q_PROPERTY(QString nick READ nick)
86 
87 public:
88  Q_INVOKABLE explicit IrcNickMessage(QObject* parent = 0);
89 
90  QString nick() const;
91 
92  bool isValid() const;
93 
94 private:
95  Q_DISABLE_COPY(IrcNickMessage)
96 };
97 
98 class COMMUNI_EXPORT IrcQuitMessage : public IrcMessage
99 {
100  Q_OBJECT
101  Q_PROPERTY(QString reason READ reason)
102 
103 public:
104  Q_INVOKABLE explicit IrcQuitMessage(QObject* parent = 0);
105 
106  QString reason() const;
107 
108  bool isValid() const;
109 
110 private:
111  Q_DISABLE_COPY(IrcQuitMessage)
112 };
113 
114 class COMMUNI_EXPORT IrcJoinMessage : public IrcMessage
115 {
116  Q_OBJECT
117  Q_PROPERTY(QString channel READ channel)
118 
119 public:
120  Q_INVOKABLE explicit IrcJoinMessage(QObject* parent = 0);
121 
122  QString channel() const;
123 
124  bool isValid() const;
125 
126 private:
127  Q_DISABLE_COPY(IrcJoinMessage)
128 };
129 
130 class COMMUNI_EXPORT IrcPartMessage : public IrcMessage
131 {
132  Q_OBJECT
133  Q_PROPERTY(QString channel READ channel)
134  Q_PROPERTY(QString reason READ reason)
135 
136 public:
137  Q_INVOKABLE explicit IrcPartMessage(QObject* parent = 0);
138 
139  QString channel() const;
140  QString reason() const;
141 
142  bool isValid() const;
143 
144 private:
145  Q_DISABLE_COPY(IrcPartMessage)
146 };
147 
148 class COMMUNI_EXPORT IrcTopicMessage : public IrcMessage
149 {
150  Q_OBJECT
151  Q_PROPERTY(QString channel READ channel)
152  Q_PROPERTY(QString topic READ topic)
153 
154 public:
155  Q_INVOKABLE explicit IrcTopicMessage(QObject* parent = 0);
156 
157  QString channel() const;
158  QString topic() const;
159 
160  bool isValid() const;
161 
162 private:
163  Q_DISABLE_COPY(IrcTopicMessage)
164 };
165 
166 class COMMUNI_EXPORT IrcInviteMessage : public IrcMessage
167 {
168  Q_OBJECT
169  Q_PROPERTY(QString user READ user)
170  Q_PROPERTY(QString channel READ channel)
171 
172 public:
173  Q_INVOKABLE explicit IrcInviteMessage(QObject* parent = 0);
174 
175  QString user() const;
176  QString channel() const;
177 
178  bool isValid() const;
179 
180 private:
181  Q_DISABLE_COPY(IrcInviteMessage)
182 };
183 
184 class COMMUNI_EXPORT IrcKickMessage : public IrcMessage
185 {
186  Q_OBJECT
187  Q_PROPERTY(QString channel READ channel)
188  Q_PROPERTY(QString user READ user)
189  Q_PROPERTY(QString reason READ reason)
190 
191 public:
192  Q_INVOKABLE explicit IrcKickMessage(QObject* parent = 0);
193 
194  QString channel() const;
195  QString user() const;
196  QString reason() const;
197 
198  bool isValid() const;
199 
200 private:
201  Q_DISABLE_COPY(IrcKickMessage)
202 };
203 
204 class COMMUNI_EXPORT IrcModeMessage : public IrcMessage
205 {
206  Q_OBJECT
207  Q_PROPERTY(QString target READ target)
208  Q_PROPERTY(QString mode READ mode)
209  Q_PROPERTY(QString argument READ argument)
210 
211 public:
212  Q_INVOKABLE explicit IrcModeMessage(QObject* parent = 0);
213 
214  QString target() const;
215  QString mode() const;
216  QString argument() const;
217 
218  bool isValid() const;
219 
220 private:
221  Q_DISABLE_COPY(IrcModeMessage)
222 };
223 
224 class COMMUNI_EXPORT IrcPrivateMessage : public IrcMessage
225 {
226  Q_OBJECT
227  Q_PROPERTY(QString target READ target)
228  Q_PROPERTY(QString message READ message)
229  Q_PROPERTY(bool action READ isAction)
230  Q_PROPERTY(bool request READ isRequest)
231 
232 public:
233  Q_INVOKABLE explicit IrcPrivateMessage(QObject* parent = 0);
234 
235  QString target() const;
236  QString message() const;
237  bool isAction() const;
238  bool isRequest() const;
239 
240  bool isValid() const;
241 
242 private:
243  Q_DISABLE_COPY(IrcPrivateMessage)
244 };
245 
246 class COMMUNI_EXPORT IrcNoticeMessage : public IrcMessage
247 {
248  Q_OBJECT
249  Q_PROPERTY(QString target READ target)
250  Q_PROPERTY(QString message READ message)
251  Q_PROPERTY(bool reply READ isReply)
252 
253 public:
254  Q_INVOKABLE explicit IrcNoticeMessage(QObject* parent = 0);
255 
256  QString target() const;
257  QString message() const;
258  bool isReply() const;
259 
260  bool isValid() const;
261 
262 private:
263  Q_DISABLE_COPY(IrcNoticeMessage)
264 };
265 
266 class COMMUNI_EXPORT IrcPingMessage : public IrcMessage
267 {
268  Q_OBJECT
269  Q_PROPERTY(QString argument READ argument)
270 
271 public:
272  Q_INVOKABLE explicit IrcPingMessage(QObject* parent = 0);
273 
274  QString argument() const;
275 
276  bool isValid() const;
277 
278 private:
279  Q_DISABLE_COPY(IrcPingMessage)
280 };
281 
282 class COMMUNI_EXPORT IrcPongMessage : public IrcMessage
283 {
284  Q_OBJECT
285  Q_PROPERTY(QString argument READ argument)
286 
287 public:
288  Q_INVOKABLE explicit IrcPongMessage(QObject* parent = 0);
289 
290  QString argument() const;
291 
292  bool isValid() const;
293 
294 private:
295  Q_DISABLE_COPY(IrcPongMessage)
296 };
297 
298 class COMMUNI_EXPORT IrcErrorMessage : public IrcMessage
299 {
300  Q_OBJECT
301  Q_PROPERTY(QString error READ error)
302 
303 public:
304  Q_INVOKABLE explicit IrcErrorMessage(QObject* parent = 0);
305 
306  QString error() const;
307 
308  bool isValid() const;
309 
310 private:
311  Q_DISABLE_COPY(IrcErrorMessage)
312 };
313 
314 class COMMUNI_EXPORT IrcNumericMessage : public IrcMessage
315 {
316  Q_OBJECT
317  Q_PROPERTY(int code READ code)
318 
319 public:
320  Q_INVOKABLE explicit IrcNumericMessage(QObject* parent = 0);
321 
322  int code() const;
323 
324  bool isValid() const;
325 
326 private:
327  Q_DISABLE_COPY(IrcNumericMessage)
328 };
329 
330 #ifndef QT_NO_DEBUG_STREAM
331 COMMUNI_EXPORT QDebug operator<<(QDebug debug, const IrcMessage* message);
332 #endif // QT_NO_DEBUG_STREAM
333 
334 #endif // IRCMESSAGE_H