00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 #ifndef IRC_BUFFER_H
00016 #define IRC_BUFFER_H
00017 
00018 #include <ircglobal.h>
00019 #include <QStringList>
00020 #include <QObject>
00021 
00022 namespace Irc
00023 {
00024     class Session;
00025     class BufferPrivate;
00026 
00027     class IRC_EXPORT Buffer : public QObject
00028     {
00029         Q_OBJECT
00030         Q_PROPERTY(QString receiver READ receiver)
00031         Q_PROPERTY(QString topic READ topic)
00032         Q_PROPERTY(QStringList names READ names)
00033         Q_FLAGS(MessageFlags)
00034         Q_ENUMS(MessageFlag)
00035 
00036     public:
00037         ~Buffer();
00038 
00039         Session* session() const;
00040 
00041         QString receiver() const;
00042         QString topic() const;
00043         QStringList names() const;
00044         QString modes(const QString& name) const;
00045         QString visualMode(const QString& name) const;
00046 
00047         enum MessageFlag
00048         {
00049             NoFlags = 0x0,
00050             IdentifiedFlag = 0x1,
00051             EchoFlag = 0x2,
00052         };
00053         Q_DECLARE_FLAGS(MessageFlags, MessageFlag)
00054 
00055     public Q_SLOTS:
00056         bool message(const QString& message);
00057         bool notice(const QString& notice);
00058         bool ctcpAction(const QString& action);
00059 
00060     Q_SIGNALS:
00061         void receiverChanged(const QString& receiver);
00062         void motdReceived(const QString& motd);
00063         void joined(const QString& origin);
00064         void parted(const QString& origin, const QString& message);
00065         void quit(const QString& origin, const QString& message);
00066         void nickChanged(const QString& origin, const QString& nick);
00067         void modeChanged(const QString& origin, const QString& mode, const QString& args);
00068         void topicChanged(const QString& origin, const QString& topic);
00069         void invited(const QString& origin, const QString& receiver, const QString& channel);
00070         void kicked(const QString& origin, const QString& nick, const QString& message);
00071         void messageReceived(const QString& origin, const QString& message,
00072                              Irc::Buffer::MessageFlags flags = Irc::Buffer::NoFlags);
00073         void noticeReceived(const QString& origin, const QString& notice,
00074                             Irc::Buffer::MessageFlags flags = Irc::Buffer::NoFlags);
00075         void ctcpRequestReceived(const QString& origin, const QString& request,
00076                                  Irc::Buffer::MessageFlags flags = Irc::Buffer::NoFlags);
00077         void ctcpReplyReceived(const QString& origin, const QString& reply,
00078                                Irc::Buffer::MessageFlags flags = Irc::Buffer::NoFlags);
00079         void ctcpActionReceived(const QString& origin, const QString& action,
00080                                 Irc::Buffer::MessageFlags flags = Irc::Buffer::NoFlags);
00081         void numericMessageReceived(const QString& origin, uint code, const QStringList& params);
00082         void unknownMessageReceived(const QString& origin, const QStringList& params);
00083 
00084     protected:
00085         Buffer(const QString& receiver, Session* parent = 0);
00086         Buffer(BufferPrivate& dd, const QString& receiver, Session* parent = 0);
00087         BufferPrivate* const d_ptr;
00088 
00089     private:
00090         Q_DECLARE_PRIVATE(Buffer)
00091         Q_DISABLE_COPY(Buffer)
00092         friend class SessionPrivate;
00093         friend class Session;
00094     };
00095 }
00096 
00097 #ifndef QT_NO_DEBUG_STREAM
00098 IRC_EXPORT QDebug operator<<(QDebug debug, const Irc::Buffer* buffer);
00099 #endif // QT_NO_DEBUG_STREAM
00100 
00101 Q_DECLARE_OPERATORS_FOR_FLAGS(Irc::Buffer::MessageFlags)
00102 
00103 #endif // IRC_BUFFER_H