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 IRCSESSION_H 00016 #define IRCSESSION_H 00017 00018 #include <IrcGlobal> 00019 #include <QtCore/qobject.h> 00020 #include <QtCore/qscopedpointer.h> 00021 #include <QtNetwork/qabstractsocket.h> 00022 00023 class IrcCommand; 00024 class IrcMessage; 00025 class IrcSessionPrivate; 00026 00027 class COMMUNI_EXPORT IrcSession : public QObject 00028 { 00029 Q_OBJECT 00030 00031 Q_PROPERTY(QString host READ host WRITE setHost NOTIFY hostChanged) 00032 Q_PROPERTY(int port READ port WRITE setPort NOTIFY portChanged) 00033 Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged) 00034 Q_PROPERTY(QString nickName READ nickName WRITE setNickName NOTIFY nickNameChanged) 00035 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged) 00036 Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding) 00037 Q_PROPERTY(bool active READ isActive NOTIFY activeChanged) 00038 Q_PROPERTY(bool connected READ isConnected NOTIFY connectedChanged) 00039 Q_PROPERTY(QAbstractSocket* socket READ socket WRITE setSocket) 00040 00041 public: 00042 explicit IrcSession(QObject* parent = 0); 00043 virtual ~IrcSession(); 00044 00045 QString host() const; 00046 void setHost(const QString& host); 00047 00048 int port() const; 00049 void setPort(int port); 00050 00051 QString userName() const; 00052 void setUserName(const QString& name); 00053 00054 QString nickName() const; 00055 void setNickName(const QString& name); 00056 00057 QString realName() const; 00058 void setRealName(const QString& name); 00059 00060 QByteArray encoding() const; 00061 void setEncoding(const QByteArray& encoding); 00062 00063 bool isActive() const; 00064 bool isConnected() const; 00065 00066 QAbstractSocket* socket() const; 00067 void setSocket(QAbstractSocket* socket); 00068 00069 Q_INVOKABLE bool sendCommand(IrcCommand* command); 00070 Q_INVOKABLE bool sendRaw(const QString& message); 00071 00072 public Q_SLOTS: 00073 void open(); 00074 void close(); 00075 00076 Q_SIGNALS: 00077 void connecting(); 00078 void password(QString* password); 00079 void connected(); 00080 void disconnected(); 00081 void socketError(QAbstractSocket::SocketError error); 00082 void socketStateChanged(QAbstractSocket::SocketState state); 00083 00084 void messageReceived(IrcMessage* message); 00085 00086 void hostChanged(const QString& host); 00087 void portChanged(int port); 00088 void userNameChanged(const QString& name); 00089 void nickNameChanged(const QString& name); 00090 void realNameChanged(const QString& name); 00091 00092 void activeChanged(bool active); 00093 void connectedChanged(bool connected); 00094 00095 private: 00096 QScopedPointer<IrcSessionPrivate> d_ptr; 00097 Q_DECLARE_PRIVATE(IrcSession) 00098 Q_DISABLE_COPY(IrcSession) 00099 00100 Q_PRIVATE_SLOT(d_func(), void _q_connected()) 00101 Q_PRIVATE_SLOT(d_func(), void _q_disconnected()) 00102 Q_PRIVATE_SLOT(d_func(), void _q_reconnect()) 00103 Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError)) 00104 Q_PRIVATE_SLOT(d_func(), void _q_state(QAbstractSocket::SocketState)) 00105 Q_PRIVATE_SLOT(d_func(), void _q_readData()) 00106 }; 00107 00108 #ifndef QT_NO_DEBUG_STREAM 00109 COMMUNI_EXPORT QDebug operator<<(QDebug debug, const IrcSession* session); 00110 #endif // QT_NO_DEBUG_STREAM 00111 00112 #endif // IRCSESSION_H