diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2014-10-06 15:03:54 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2014-10-06 15:03:54 +0200 |
| commit | 529f38bd8878b6b1bea2b5457031ce936aab8d80 (patch) | |
| tree | 1193caefcad12f6a36f818048e4547e60add4398 /libcommuni/include/IrcCore/ircmessage.h | |
| parent | 3b58b5536935adff242928ed9f30e1c0262fbd7c (diff) | |
| download | manager-529f38bd8878b6b1bea2b5457031ce936aab8d80.tar.gz manager-529f38bd8878b6b1bea2b5457031ce936aab8d80.zip | |
addedd communi
Diffstat (limited to 'libcommuni/include/IrcCore/ircmessage.h')
| -rw-r--r-- | libcommuni/include/IrcCore/ircmessage.h | 519 |
1 files changed, 519 insertions, 0 deletions
diff --git a/libcommuni/include/IrcCore/ircmessage.h b/libcommuni/include/IrcCore/ircmessage.h new file mode 100644 index 0000000..02b8c86 --- /dev/null +++ b/libcommuni/include/IrcCore/ircmessage.h @@ -0,0 +1,519 @@ +/* + Copyright (C) 2008-2014 The Communi Project + + You may use this file under the terms of BSD license as follows: + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef IRCMESSAGE_H +#define IRCMESSAGE_H + +#include <Irc> +#include <IrcGlobal> +#include <QtCore/qobject.h> +#include <QtCore/qvariant.h> +#include <QtCore/qmetatype.h> +#include <QtCore/qdatetime.h> +#include <QtCore/qstringlist.h> + +IRC_BEGIN_NAMESPACE + +class IrcCommand; +class IrcNetwork; +class IrcConnection; +class IrcMessagePrivate; + +class IRC_CORE_EXPORT IrcMessage : public QObject +{ + Q_OBJECT + Q_PROPERTY(IrcConnection* connection READ connection) + Q_PROPERTY(IrcNetwork* network READ network) + Q_PROPERTY(Type type READ type) + Q_PROPERTY(bool own READ isOwn) + Q_PROPERTY(Flags flags READ flags) + Q_PROPERTY(bool valid READ isValid) + Q_PROPERTY(QString command READ command) + Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) + Q_PROPERTY(QString nick READ nick) + Q_PROPERTY(QString ident READ ident) + Q_PROPERTY(QString host READ host) + Q_PROPERTY(QStringList parameters READ parameters WRITE setParameters) + Q_PROPERTY(QDateTime timeStamp READ timeStamp WRITE setTimeStamp) + Q_PROPERTY(QVariantMap tags READ tags WRITE setTags) + Q_ENUMS(Type Flag) + Q_FLAGS(Flags) + +public: + enum Type { + Unknown, + Capability, + Error, + Invite, + Join, + Kick, + Mode, + Motd, + Names, + Nick, + Notice, + Numeric, + Part, + Ping, + Pong, + Private, + Quit, + Topic, + WhoReply + }; + + enum Flag { + None = 0x0, + Own = 0x1, + Identified = 0x2, + Unidentified = 0x4, + Playback = 0x8 + }; + Q_DECLARE_FLAGS(Flags, Flag) + + Q_INVOKABLE explicit IrcMessage(IrcConnection* connection); + virtual ~IrcMessage(); + + IrcConnection* connection() const; + IrcNetwork* network() const; + + Type type() const; + bool isOwn() const; + + Flags flags() const; + void setFlags(Flags flags); + + QString command() const; + void setCommand(const QString& command); + + QString prefix() const; + void setPrefix(const QString& prefix); + + QString nick() const; + QString ident() const; + QString host() const; + + QStringList parameters() const; + void setParameters(const QStringList& parameters); + + virtual bool isValid() const; + + QDateTime timeStamp() const; + void setTimeStamp(const QDateTime& timeStamp); + + QByteArray encoding() const; + void setEncoding(const QByteArray& encoding); + + QVariantMap tags() const; + void setTags(const QVariantMap& tags); + + Q_INVOKABLE QByteArray toData() const; + Q_INVOKABLE static IrcMessage* fromData(const QByteArray& data, IrcConnection* connection); + Q_INVOKABLE static IrcMessage* fromParameters(const QString& prefix, const QString& command, const QStringList& parameters, IrcConnection* connection); + +protected: + QScopedPointer<IrcMessagePrivate> d_ptr; + Q_DECLARE_PRIVATE(IrcMessage) + Q_DISABLE_COPY(IrcMessage) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(IrcMessage::Flags) + +class IRC_CORE_EXPORT IrcCapabilityMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString subCommand READ subCommand) + Q_PROPERTY(QStringList capabilities READ capabilities) + +public: + Q_INVOKABLE explicit IrcCapabilityMessage(IrcConnection* connection); + + QString subCommand() const; + QStringList capabilities() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcCapabilityMessage) +}; + +class IRC_CORE_EXPORT IrcErrorMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString error READ error) + +public: + Q_INVOKABLE explicit IrcErrorMessage(IrcConnection* connection); + + QString error() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcErrorMessage) +}; + +class IRC_CORE_EXPORT IrcInviteMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString user READ user) + Q_PROPERTY(QString channel READ channel) + +public: + Q_INVOKABLE explicit IrcInviteMessage(IrcConnection* connection); + + QString user() const; + QString channel() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcInviteMessage) +}; + +class IRC_CORE_EXPORT IrcJoinMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString channel READ channel) + +public: + Q_INVOKABLE explicit IrcJoinMessage(IrcConnection* connection); + + QString channel() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcJoinMessage) +}; + +class IRC_CORE_EXPORT IrcKickMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString channel READ channel) + Q_PROPERTY(QString user READ user) + Q_PROPERTY(QString reason READ reason) + +public: + Q_INVOKABLE explicit IrcKickMessage(IrcConnection* connection); + + QString channel() const; + QString user() const; + QString reason() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcKickMessage) +}; + +class IRC_CORE_EXPORT IrcModeMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString target READ target) + Q_PROPERTY(QString mode READ mode) + Q_PROPERTY(QString argument READ argument) + Q_PROPERTY(QStringList arguments READ arguments) + Q_PROPERTY(bool reply READ isReply) + Q_PROPERTY(Kind kind READ kind) + Q_ENUMS(Kind) + +public: + Q_INVOKABLE explicit IrcModeMessage(IrcConnection* connection); + + QString target() const; + QString mode() const; + QString argument() const; + QStringList arguments() const; + bool isReply() const; + + enum Kind { Channel, User }; + Kind kind() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcModeMessage) +}; + +class IRC_CORE_EXPORT IrcMotdMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QStringList lines READ lines) + +public: + Q_INVOKABLE explicit IrcMotdMessage(IrcConnection* connection); + + QStringList lines() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcMotdMessage) +}; + +class IRC_CORE_EXPORT IrcNamesMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString channel READ channel) + Q_PROPERTY(QStringList names READ names) + +public: + Q_INVOKABLE explicit IrcNamesMessage(IrcConnection* connection); + + QString channel() const; + QStringList names() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcNamesMessage) +}; + +class IRC_CORE_EXPORT IrcNickMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString oldNick READ oldNick) + Q_PROPERTY(QString newNick READ newNick) + +public: + Q_INVOKABLE explicit IrcNickMessage(IrcConnection* connection); + + QString oldNick() const; + QString newNick() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcNickMessage) +}; + +class IRC_CORE_EXPORT IrcNoticeMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString target READ target) + Q_PROPERTY(QString content READ content) + Q_PROPERTY(bool private READ isPrivate) + Q_PROPERTY(bool reply READ isReply) + +public: + Q_INVOKABLE explicit IrcNoticeMessage(IrcConnection* connection); + + QString target() const; + QString content() const; + bool isPrivate() const; + bool isReply() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcNoticeMessage) +}; + +class IRC_CORE_EXPORT IrcNumericMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(int code READ code) + +public: + Q_INVOKABLE explicit IrcNumericMessage(IrcConnection* connection); + + int code() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcNumericMessage) +}; + +class IRC_CORE_EXPORT IrcPartMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString channel READ channel) + Q_PROPERTY(QString reason READ reason) + +public: + Q_INVOKABLE explicit IrcPartMessage(IrcConnection* connection); + + QString channel() const; + QString reason() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcPartMessage) +}; + +class IRC_CORE_EXPORT IrcPingMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString argument READ argument) + +public: + Q_INVOKABLE explicit IrcPingMessage(IrcConnection* connection); + + QString argument() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcPingMessage) +}; + +class IRC_CORE_EXPORT IrcPongMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString argument READ argument) + +public: + Q_INVOKABLE explicit IrcPongMessage(IrcConnection* connection); + + QString argument() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcPongMessage) +}; + +class IRC_CORE_EXPORT IrcPrivateMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString target READ target) + Q_PROPERTY(QString content READ content) + Q_PROPERTY(bool private READ isPrivate) + Q_PROPERTY(bool action READ isAction) + Q_PROPERTY(bool request READ isRequest) + +public: + Q_INVOKABLE explicit IrcPrivateMessage(IrcConnection* connection); + + QString target() const; + QString content() const; + bool isPrivate() const; + bool isAction() const; + bool isRequest() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcPrivateMessage) +}; + +class IRC_CORE_EXPORT IrcQuitMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString reason READ reason) + +public: + Q_INVOKABLE explicit IrcQuitMessage(IrcConnection* connection); + + QString reason() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcQuitMessage) +}; + +class IRC_CORE_EXPORT IrcTopicMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString channel READ channel) + Q_PROPERTY(QString topic READ topic) + Q_PROPERTY(bool reply READ isReply) + +public: + Q_INVOKABLE explicit IrcTopicMessage(IrcConnection* connection); + + QString channel() const; + QString topic() const; + bool isReply() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcTopicMessage) +}; + +class IRC_CORE_EXPORT IrcWhoReplyMessage : public IrcMessage +{ + Q_OBJECT + Q_PROPERTY(QString mask READ mask) + Q_PROPERTY(QString server READ server) + Q_PROPERTY(bool away READ isAway) + Q_PROPERTY(bool servOp READ isServOp) + Q_PROPERTY(QString realName READ realName) + +public: + Q_INVOKABLE explicit IrcWhoReplyMessage(IrcConnection* connection); + + QString mask() const; + QString server() const; + bool isAway() const; + bool isServOp() const; + QString realName() const; + + bool isValid() const; + +private: + Q_DISABLE_COPY(IrcWhoReplyMessage) +}; + +#ifndef QT_NO_DEBUG_STREAM +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, IrcMessage::Type type); +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, IrcMessage::Flag flag); +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, IrcMessage::Flags flags); +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, IrcModeMessage::Kind kind); +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, const IrcMessage* message); +#endif // QT_NO_DEBUG_STREAM + +IRC_END_NAMESPACE + +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcMessage::Type)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcCapabilityMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcErrorMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcInviteMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcJoinMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcKickMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcModeMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcMotdMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcNamesMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcNickMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcNoticeMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcNumericMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcPartMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcPingMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcPongMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcPrivateMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcQuitMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcTopicMessage*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcWhoReplyMessage*)) + +#endif // IRCMESSAGE_H |
