Communi 1.0.0
A cross-platform IRC client library written with Qt 4
include/ircsession.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 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
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Defines