Communi  1.1.0
A cross-platform IRC client library written with Qt 4
 All Classes Files Functions Enumerations Enumerator Properties Macros Groups Pages
ircsession.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2008-2012 J-P Nurmi <jpnurmi@gmail.com>
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
12 * License for more details.
13 */
14 
15 #ifndef IRCSESSION_H
16 #define IRCSESSION_H
17 
18 #include <IrcGlobal>
19 #include <QtCore/qobject.h>
20 #include <QtCore/qscopedpointer.h>
21 #include <QtNetwork/qabstractsocket.h>
22 
23 class IrcCommand;
24 class IrcMessage;
25 class IrcSessionPrivate;
26 
27 class COMMUNI_EXPORT IrcSession : public QObject
28 {
29  Q_OBJECT
30 
31  Q_PROPERTY(QString host READ host WRITE setHost NOTIFY hostChanged)
32  Q_PROPERTY(int port READ port WRITE setPort NOTIFY portChanged)
33  Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)
34  Q_PROPERTY(QString nickName READ nickName WRITE setNickName NOTIFY nickNameChanged)
35  Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
36  Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding)
37  Q_PROPERTY(bool active READ isActive NOTIFY activeChanged)
38  Q_PROPERTY(bool connected READ isConnected NOTIFY connectedChanged)
39  Q_PROPERTY(QAbstractSocket* socket READ socket WRITE setSocket)
40 
41 public:
42  explicit IrcSession(QObject* parent = 0);
43  virtual ~IrcSession();
44 
45  QString host() const;
46  void setHost(const QString& host);
47 
48  int port() const;
49  void setPort(int port);
50 
51  QString userName() const;
52  void setUserName(const QString& name);
53 
54  QString nickName() const;
55  void setNickName(const QString& name);
56 
57  QString realName() const;
58  void setRealName(const QString& name);
59 
60  QByteArray encoding() const;
61  void setEncoding(const QByteArray& encoding);
62 
63  bool isActive() const;
64  bool isConnected() const;
65 
66  QAbstractSocket* socket() const;
67  void setSocket(QAbstractSocket* socket);
68 
69  Q_INVOKABLE bool sendCommand(IrcCommand* command);
70  Q_INVOKABLE bool sendData(const QByteArray& data);
71  Q_INVOKABLE bool sendRaw(const QString& message);
72 
73 public Q_SLOTS:
74  void open();
75  void close();
76 
77 Q_SIGNALS:
78  void connecting();
79  void password(QString* password);
80  void connected();
81  void disconnected();
82  void socketError(QAbstractSocket::SocketError error);
83  void socketStateChanged(QAbstractSocket::SocketState state);
84 
85  void messageReceived(IrcMessage* message);
86 
87  void hostChanged(const QString& host);
88  void portChanged(int port);
89  void userNameChanged(const QString& name);
90  void nickNameChanged(const QString& name);
91  void realNameChanged(const QString& name);
92 
93  void activeChanged(bool active);
94  void connectedChanged(bool connected);
95 
96 private:
97  QScopedPointer<IrcSessionPrivate> d_ptr;
98  Q_DECLARE_PRIVATE(IrcSession)
99  Q_DISABLE_COPY(IrcSession)
100 
101  Q_PRIVATE_SLOT(d_func(), void _q_connected())
102  Q_PRIVATE_SLOT(d_func(), void _q_disconnected())
103  Q_PRIVATE_SLOT(d_func(), void _q_reconnect())
104  Q_PRIVATE_SLOT(d_func(), void _q_error(QAbstractSocket::SocketError))
105  Q_PRIVATE_SLOT(d_func(), void _q_state(QAbstractSocket::SocketState))
106  Q_PRIVATE_SLOT(d_func(), void _q_readData())
107 };
108 
109 #ifndef QT_NO_DEBUG_STREAM
110 COMMUNI_EXPORT QDebug operator<<(QDebug debug, const IrcSession* session);
111 #endif // QT_NO_DEBUG_STREAM
112 
113 #endif // IRCSESSION_H