Communi 1.0.0
A cross-platform IRC client library written with Qt 4
include/ircmessage.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Defines