From 8a6d4b06f2291c363f3dea17837ed20893852453 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Wed, 9 Sep 2015 19:00:56 +0200 Subject: Cleanup repo with some directories --- src/libcommuni/include/IrcCore/irccommand.h | 158 ++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 src/libcommuni/include/IrcCore/irccommand.h (limited to 'src/libcommuni/include/IrcCore/irccommand.h') diff --git a/src/libcommuni/include/IrcCore/irccommand.h b/src/libcommuni/include/IrcCore/irccommand.h new file mode 100644 index 0000000..e532755 --- /dev/null +++ b/src/libcommuni/include/IrcCore/irccommand.h @@ -0,0 +1,158 @@ +/* + 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 IRCCOMMAND_H +#define IRCCOMMAND_H + +#include +#include +#include +#include + +IRC_BEGIN_NAMESPACE + +class IrcMessage; +class IrcConnection; +class IrcCommandPrivate; + +class IRC_CORE_EXPORT IrcCommand : public QObject +{ + Q_OBJECT + Q_PROPERTY(QStringList parameters READ parameters WRITE setParameters) + Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding) + Q_PROPERTY(Type type READ type WRITE setType) + Q_ENUMS(Type) + +public: + enum Type { + Admin, + Away, + Capability, + CtcpAction, + CtcpReply, + CtcpRequest, + Custom, + Info, + Invite, + Join, + Kick, + Knock, + List, + Message, + Mode, + Motd, + Names, + Nick, + Notice, + Part, + Ping, + Pong, + Quit, + Quote, + Stats, + Time, + Topic, + Trace, + Users, + Version, + Who, + Whois, + Whowas + }; + + explicit IrcCommand(QObject* parent = 0); + virtual ~IrcCommand(); + + Type type() const; + void setType(Type type); + + QStringList parameters() const; + void setParameters(const QStringList& parameters); + + QByteArray encoding() const; + void setEncoding(const QByteArray& encoding); + + virtual QString toString() const; + + Q_INVOKABLE IrcMessage* toMessage(const QString& prefix, IrcConnection* connection) const; + + Q_INVOKABLE static IrcCommand* createAdmin(const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createAway(const QString& reason = QString()); + Q_INVOKABLE static IrcCommand* createCapability(const QString& subCommand, const QString& capability); + Q_INVOKABLE static IrcCommand* createCapability(const QString& subCommand, const QStringList& capabilities = QStringList()); + Q_INVOKABLE static IrcCommand* createCtcpAction(const QString& target, const QString& action); + Q_INVOKABLE static IrcCommand* createCtcpReply(const QString& target, const QString& reply); + Q_INVOKABLE static IrcCommand* createCtcpRequest(const QString& target, const QString& request); + Q_INVOKABLE static IrcCommand* createInfo(const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createInvite(const QString& user, const QString& channel); + Q_INVOKABLE static IrcCommand* createJoin(const QString& channel, const QString& key = QString()); + Q_INVOKABLE static IrcCommand* createJoin(const QStringList& channels, const QStringList& keys = QStringList()); + Q_INVOKABLE static IrcCommand* createKick(const QString& channel, const QString& user, const QString& reason = QString()); + Q_INVOKABLE static IrcCommand* createKnock(const QString& channel, const QString& message = QString()); + Q_INVOKABLE static IrcCommand* createList(const QStringList& channels = QStringList(), const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createMessage(const QString& target, const QString& message); + Q_INVOKABLE static IrcCommand* createMode(const QString& target, const QString& mode = QString(), const QString& arg = QString()); + Q_INVOKABLE static IrcCommand* createMotd(const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createNames(const QString& channel = QString(), const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createNames(const QStringList& channels, const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createNick(const QString& nick); + Q_INVOKABLE static IrcCommand* createNotice(const QString& target, const QString& notice); + Q_INVOKABLE static IrcCommand* createPart(const QString& channel, const QString& reason = QString()); + Q_INVOKABLE static IrcCommand* createPart(const QStringList& channels, const QString& reason = QString()); + Q_INVOKABLE static IrcCommand* createPing(const QString& argument); + Q_INVOKABLE static IrcCommand* createPong(const QString& argument); + Q_INVOKABLE static IrcCommand* createQuit(const QString& reason = QString()); + Q_INVOKABLE static IrcCommand* createQuote(const QString& raw); + Q_INVOKABLE static IrcCommand* createQuote(const QStringList& parameters); + Q_INVOKABLE static IrcCommand* createStats(const QString& query, const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createTime(const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createTopic(const QString& channel, const QString& topic = QString()); + Q_INVOKABLE static IrcCommand* createTrace(const QString& target = QString()); + Q_INVOKABLE static IrcCommand* createUsers(const QString& server = QString()); + Q_INVOKABLE static IrcCommand* createVersion(const QString& user = QString()); + Q_INVOKABLE static IrcCommand* createWho(const QString& mask, bool operators = false); + Q_INVOKABLE static IrcCommand* createWhois(const QString& user); + Q_INVOKABLE static IrcCommand* createWhowas(const QString& user, int count = 1); + +private: + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(IrcCommand) + Q_DISABLE_COPY(IrcCommand) +}; + +#ifndef QT_NO_DEBUG_STREAM +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, IrcCommand::Type type); +IRC_CORE_EXPORT QDebug operator<<(QDebug debug, const IrcCommand* command); +#endif // QT_NO_DEBUG_STREAM + +IRC_END_NAMESPACE + +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcCommand*)) +Q_DECLARE_METATYPE(IRC_PREPEND_NAMESPACE(IrcCommand::Type)) + +#endif // IRCCOMMAND_H -- cgit v1.2.3-54-g00ecf