Communi 1.0.0
A cross-platform IRC client library written with Qt 4
|
00001 /* 00002 * Copyright (C) 2008-2011 J-P Nurmi <jpnurmi@gmail.com> 00003 * 00004 * This library is free software; you can redistribute it and/or modify it 00005 * under the terms of the GNU Lesser General Public License as published by 00006 * the Free Software Foundation; either version 2 of the License, or (at your 00007 * option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, but WITHOUT 00010 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00011 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00012 * License for more details. 00013 */ 00014 00015 #ifndef IRCMESSAGE_H 00016 #define IRCMESSAGE_H 00017 00018 #include <IrcGlobal> 00019 #include <IrcSender> 00020 #include <QtCore/qobject.h> 00021 #include <QtCore/qstringlist.h> 00022 00023 class IrcCommand; 00024 class IrcMessagePrivate; 00025 00026 class COMMUNI_EXPORT IrcMessage : public QObject 00027 { 00028 Q_OBJECT 00029 Q_PROPERTY(Type type READ type) 00030 Q_PROPERTY(bool valid READ isValid) 00031 Q_PROPERTY(IrcSender sender READ sender) 00032 Q_PROPERTY(QString command READ command) 00033 Q_PROPERTY(QStringList parameters READ parameters) 00034 Q_ENUMS(Type) 00035 00036 public: 00037 enum Type 00038 { 00039 Unknown, 00040 Nick, 00041 Quit, 00042 Join, 00043 Part, 00044 Topic, 00045 Invite, 00046 Kick, 00047 Mode, 00048 Private, 00049 Notice, 00050 Ping, 00051 Pong, 00052 Error, 00053 Numeric 00054 }; 00055 00056 Q_INVOKABLE explicit IrcMessage(QObject* parent = 0); 00057 virtual ~IrcMessage(); 00058 00059 Type type() const; 00060 IrcSender sender() const; 00061 QString command() const; 00062 QStringList parameters() const; 00063 00064 virtual bool isValid() const; 00065 Q_INVOKABLE QString toString() const; 00066 Q_INVOKABLE static IrcMessage* fromString(const QString& str, QObject* parent = 0); 00067 Q_INVOKABLE static IrcMessage* fromCommand(const QString& sender, IrcCommand* command, QObject* parent = 0); 00068 00069 protected: 00070 QScopedPointer<IrcMessagePrivate> d_ptr; 00071 Q_DECLARE_PRIVATE(IrcMessage) 00072 Q_DISABLE_COPY(IrcMessage) 00073 }; 00074 00075 class COMMUNI_EXPORT IrcNickMessage : public IrcMessage 00076 { 00077 Q_OBJECT 00078 Q_PROPERTY(QString nick READ nick) 00079 00080 public: 00081 Q_INVOKABLE explicit IrcNickMessage(QObject* parent = 0); 00082 00083 QString nick() const; 00084 00085 bool isValid() const; 00086 }; 00087 00088 class COMMUNI_EXPORT IrcQuitMessage : public IrcMessage 00089 { 00090 Q_OBJECT 00091 Q_PROPERTY(QString reason READ reason) 00092 00093 public: 00094 Q_INVOKABLE explicit IrcQuitMessage(QObject* parent = 0); 00095 00096 QString reason() const; 00097 00098 bool isValid() const; 00099 }; 00100 00101 class COMMUNI_EXPORT IrcJoinMessage : public IrcMessage 00102 { 00103 Q_OBJECT 00104 Q_PROPERTY(QString channel READ channel) 00105 00106 public: 00107 Q_INVOKABLE explicit IrcJoinMessage(QObject* parent = 0); 00108 00109 QString channel() const; 00110 00111 bool isValid() const; 00112 }; 00113 00114 class COMMUNI_EXPORT IrcPartMessage : public IrcMessage 00115 { 00116 Q_OBJECT 00117 Q_PROPERTY(QString channel READ channel) 00118 Q_PROPERTY(QString reason READ reason) 00119 00120 public: 00121 Q_INVOKABLE explicit IrcPartMessage(QObject* parent = 0); 00122 00123 QString channel() const; 00124 QString reason() const; 00125 00126 bool isValid() const; 00127 }; 00128 00129 class COMMUNI_EXPORT IrcTopicMessage : public IrcMessage 00130 { 00131 Q_OBJECT 00132 Q_PROPERTY(QString channel READ channel) 00133 Q_PROPERTY(QString topic READ topic) 00134 00135 public: 00136 Q_INVOKABLE explicit IrcTopicMessage(QObject* parent = 0); 00137 00138 QString channel() const; 00139 QString topic() const; 00140 00141 bool isValid() const; 00142 }; 00143 00144 class COMMUNI_EXPORT IrcInviteMessage : public IrcMessage 00145 { 00146 Q_OBJECT 00147 Q_PROPERTY(QString user READ user) 00148 Q_PROPERTY(QString channel READ channel) 00149 00150 public: 00151 Q_INVOKABLE explicit IrcInviteMessage(QObject* parent = 0); 00152 00153 QString user() const; 00154 QString channel() const; 00155 00156 bool isValid() const; 00157 }; 00158 00159 class COMMUNI_EXPORT IrcKickMessage : public IrcMessage 00160 { 00161 Q_OBJECT 00162 Q_PROPERTY(QString channel READ channel) 00163 Q_PROPERTY(QString user READ user) 00164 Q_PROPERTY(QString reason READ reason) 00165 00166 public: 00167 Q_INVOKABLE explicit IrcKickMessage(QObject* parent = 0); 00168 00169 QString channel() const; 00170 QString user() const; 00171 QString reason() const; 00172 00173 bool isValid() const; 00174 }; 00175 00176 class COMMUNI_EXPORT IrcModeMessage : public IrcMessage 00177 { 00178 Q_OBJECT 00179 Q_PROPERTY(QString target READ target) 00180 Q_PROPERTY(QString mode READ mode) 00181 Q_PROPERTY(QString argument READ argument) 00182 00183 public: 00184 Q_INVOKABLE explicit IrcModeMessage(QObject* parent = 0); 00185 00186 QString target() const; 00187 QString mode() const; 00188 QString argument() const; 00189 00190 bool isValid() const; 00191 }; 00192 00193 class COMMUNI_EXPORT IrcPrivateMessage : public IrcMessage 00194 { 00195 Q_OBJECT 00196 Q_PROPERTY(QString target READ target) 00197 Q_PROPERTY(QString message READ message) 00198 Q_PROPERTY(bool action READ isAction) 00199 Q_PROPERTY(bool request READ isRequest) 00200 00201 public: 00202 Q_INVOKABLE explicit IrcPrivateMessage(QObject* parent = 0); 00203 00204 QString target() const; 00205 QString message() const; 00206 bool isAction() const; 00207 bool isRequest() const; 00208 00209 bool isValid() const; 00210 }; 00211 00212 class COMMUNI_EXPORT IrcNoticeMessage : public IrcMessage 00213 { 00214 Q_OBJECT 00215 Q_PROPERTY(QString target READ target) 00216 Q_PROPERTY(QString message READ message) 00217 Q_PROPERTY(bool reply READ isReply) 00218 00219 public: 00220 Q_INVOKABLE explicit IrcNoticeMessage(QObject* parent = 0); 00221 00222 QString target() const; 00223 QString message() const; 00224 bool isReply() const; 00225 00226 bool isValid() const; 00227 }; 00228 00229 class COMMUNI_EXPORT IrcPingMessage : public IrcMessage 00230 { 00231 Q_OBJECT 00232 Q_PROPERTY(QString argument READ argument) 00233 00234 public: 00235 Q_INVOKABLE explicit IrcPingMessage(QObject* parent = 0); 00236 00237 QString argument() const; 00238 00239 bool isValid() const; 00240 }; 00241 00242 class COMMUNI_EXPORT IrcPongMessage : public IrcMessage 00243 { 00244 Q_OBJECT 00245 Q_PROPERTY(QString argument READ argument) 00246 00247 public: 00248 Q_INVOKABLE explicit IrcPongMessage(QObject* parent = 0); 00249 00250 QString argument() const; 00251 00252 bool isValid() const; 00253 }; 00254 00255 class COMMUNI_EXPORT IrcErrorMessage : public IrcMessage 00256 { 00257 Q_OBJECT 00258 Q_PROPERTY(QString error READ error) 00259 00260 public: 00261 Q_INVOKABLE explicit IrcErrorMessage(QObject* parent = 0); 00262 00263 QString error() const; 00264 00265 bool isValid() const; 00266 }; 00267 00268 class COMMUNI_EXPORT IrcNumericMessage : public IrcMessage 00269 { 00270 Q_OBJECT 00271 Q_PROPERTY(int code READ code) 00272 00273 public: 00274 Q_INVOKABLE explicit IrcNumericMessage(QObject* parent = 0); 00275 00276 int code() const; 00277 00278 bool isValid() const; 00279 }; 00280 00281 #ifndef QT_NO_DEBUG_STREAM 00282 COMMUNI_EXPORT QDebug operator<<(QDebug debug, const IrcMessage* message); 00283 #endif // QT_NO_DEBUG_STREAM 00284 00285 #endif // IRCMESSAGE_H