00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef IRC_SESSION_H
00016 #define IRC_SESSION_H
00017
00018 #include <ircglobal.h>
00019 #include <QObject>
00020
00021 QT_FORWARD_DECLARE_CLASS(QAbstractSocket)
00022
00023 namespace Irc
00024 {
00025 class Buffer;
00026 class SessionPrivate;
00027
00028 class IRC_EXPORT Session : public QObject
00029 {
00030 Q_OBJECT
00031 Q_PROPERTY(QStringList autoJoinChannels READ autoJoinChannels WRITE setAutoJoinChannels)
00032 Q_PROPERTY(int autoReconnectDelay READ autoReconnectDelay WRITE setAutoReconnectDelay)
00033 Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding)
00034 Q_PROPERTY(QString host READ host WRITE setHost)
00035 Q_PROPERTY(QString ident READ ident WRITE setIdent)
00036 Q_PROPERTY(QString nick READ nick WRITE setNick)
00037 Q_PROPERTY(Options options READ options WRITE setOptions)
00038 Q_PROPERTY(QString password READ password WRITE setPassword)
00039 Q_PROPERTY(quint16 port READ port WRITE setPort)
00040 Q_PROPERTY(QString realName READ realName WRITE setRealName)
00041 Q_FLAGS(Options)
00042 Q_ENUMS(Option)
00043
00044 public:
00045 Session(QObject* parent = 0);
00046 ~Session();
00047
00048 QStringList autoJoinChannels() const;
00049 void addAutoJoinChannel(const QString& channel);
00050 void removeAutoJoinChannel(const QString& channel);
00051 void setAutoJoinChannels(const QStringList& channels);
00052
00053 int autoReconnectDelay() const;
00054 void setAutoReconnectDelay(int seconds);
00055
00056 QByteArray encoding() const;
00057 void setEncoding(const QByteArray& encoding);
00058
00059 QString ident() const;
00060 void setIdent(const QString& ident);
00061
00062 QString nick() const;
00063 void setNick(const QString& nick);
00064
00065 QString password() const;
00066 void setPassword(const QString& password);
00067
00068 QString realName() const;
00069 void setRealName(const QString& realName);
00070
00071 QString host() const;
00072 void setHost(const QString& host);
00073
00074 quint16 port() const;
00075 void setPort(quint16 port);
00076
00077 enum Option
00078 {
00079 NoOptions = 0x0,
00080 StripNicks = 0x1,
00081 EchoMessages = 0x2
00082 };
00083 Q_DECLARE_FLAGS(Options, Option)
00084
00085 Options options() const;
00086 void setOptions(Options options);
00087
00088 QAbstractSocket* socket() const;
00089 void setSocket(QAbstractSocket* socket);
00090
00091 Buffer* buffer(const QString& receiver = QString()) const;
00092
00093 Buffer* defaultBuffer() const;
00094 void setDefaultBuffer(Buffer* buffer);
00095
00096 public Q_SLOTS:
00097 void connectToServer(const QString& hostName = QString(), quint16 port = 6667);
00098 void reconnectToServer();
00099 void disconnectFromServer();
00100
00101 bool raw(const QString& message);
00102 bool motd();
00103 bool join(const QString& channel, const QString& key = QString());
00104 bool part(const QString& channel, const QString& reason = QString());
00105 bool quit(const QString& reason = QString());
00106 bool names(const QString& channel);
00107 bool list(const QString& channel = QString());
00108 bool whois(const QString& nick);
00109 bool whowas(const QString& nick);
00110 bool mode(const QString& target, const QString& mode = QString());
00111 bool topic(const QString& channel, const QString& topic = QString());
00112 bool invite(const QString& nick, const QString& channel);
00113 bool kick(const QString& nick, const QString& channel, const QString& reason = QString());
00114 bool message(const QString& receiver, const QString& message);
00115 bool notice(const QString& receiver, const QString& notice);
00116 bool ctcpAction(const QString& receiver, const QString& action);
00117 bool ctcpRequest(const QString& nick, const QString& request);
00118 bool ctcpReply(const QString& nick, const QString& reply);
00119
00120 #ifndef IRC_NO_DEPRECATED
00121
00122 Q_DECL_DEPRECATED bool sendRaw(const QString& message);
00123 Q_DECL_DEPRECATED bool cmdJoin(const QString& channel, const QString& key = QString());
00124 Q_DECL_DEPRECATED bool cmdPart(const QString& channel, const QString& reason = QString());
00125 Q_DECL_DEPRECATED bool cmdQuit(const QString& reason = QString());
00126 Q_DECL_DEPRECATED bool cmdNames(const QString& channel);
00127 Q_DECL_DEPRECATED bool cmdList(const QString& channel = QString());
00128 Q_DECL_DEPRECATED bool cmdWhois(const QString& nick);
00129 Q_DECL_DEPRECATED bool cmdMode(const QString& target, const QString& mode = QString());
00130 Q_DECL_DEPRECATED bool cmdTopic(const QString& channel, const QString& topic = QString());
00131 Q_DECL_DEPRECATED bool cmdInvite(const QString& nick, const QString& channel);
00132 Q_DECL_DEPRECATED bool cmdKick(const QString& nick, const QString& channel, const QString& reason = QString());
00133 Q_DECL_DEPRECATED bool cmdMessage(const QString& receiver, const QString& message);
00134 Q_DECL_DEPRECATED bool cmdNotice(const QString& receiver, const QString& notice);
00135 Q_DECL_DEPRECATED bool cmdCtcpAction(const QString& receiver, const QString& action);
00136 Q_DECL_DEPRECATED bool cmdCtcpRequest(const QString& nick, const QString& request);
00137 Q_DECL_DEPRECATED bool cmdCtcpReply(const QString& nick, const QString& reply);
00138 #endif // IRC_NO_DEPRECATED
00139
00140 Q_SIGNALS:
00141 void connected();
00142 void reconnecting();
00143 void disconnected();
00144
00145 void bufferAdded(Irc::Buffer* buffer);
00146 void bufferRemoved(Irc::Buffer* buffer);
00147
00148 #ifndef IRC_NO_DEPRECATED
00149
00150 Q_DECL_DEPRECATED void msgJoined(const QString& origin, const QString& channel);
00151 Q_DECL_DEPRECATED void msgParted(const QString& origin, const QString& channel, const QString& message);
00152 Q_DECL_DEPRECATED void msgQuit(const QString& origin, const QString& message);
00153 Q_DECL_DEPRECATED void msgNickChanged(const QString& origin, const QString& nick);
00154 Q_DECL_DEPRECATED void msgModeChanged(const QString& origin, const QString& receiver, const QString& mode, const QString& args);
00155 Q_DECL_DEPRECATED void msgTopicChanged(const QString& origin, const QString& channel, const QString& topic);
00156 Q_DECL_DEPRECATED void msgInvited(const QString& origin, const QString& receiver, const QString& channel);
00157 Q_DECL_DEPRECATED void msgKicked(const QString& origin, const QString& channel, const QString& nick, const QString& message);
00158 Q_DECL_DEPRECATED void msgMessageReceived(const QString& origin, const QString& receiver, const QString& message);
00159 Q_DECL_DEPRECATED void msgNoticeReceived(const QString& origin, const QString& receiver, const QString& notice);
00160 Q_DECL_DEPRECATED void msgCtcpRequestReceived(const QString& origin, const QString& request);
00161 Q_DECL_DEPRECATED void msgCtcpReplyReceived(const QString& origin, const QString& reply);
00162 Q_DECL_DEPRECATED void msgCtcpActionReceived(const QString& origin, const QString& receiver, const QString& action);
00163 Q_DECL_DEPRECATED void msgNumericMessageReceived(const QString& origin, uint code, const QStringList& params);
00164 Q_DECL_DEPRECATED void msgUnknownMessageReceived(const QString& origin, const QStringList& params);
00165 #endif // IRC_NO_DEPRECATED
00166
00167 protected:
00168 virtual Buffer* createBuffer(const QString& receiver);
00169
00170 private:
00171 SessionPrivate* const d_ptr;
00172 Q_DECLARE_PRIVATE(Session)
00173 Q_DISABLE_COPY(Session)
00174
00175 Q_PRIVATE_SLOT(d_func(), void _q_connected())
00176 Q_PRIVATE_SLOT(d_func(), void _q_disconnected())
00177 Q_PRIVATE_SLOT(d_func(), void _q_reconnect())
00178 Q_PRIVATE_SLOT(d_func(), void _q_error())
00179 Q_PRIVATE_SLOT(d_func(), void _q_state(QAbstractSocket::SocketState))
00180 Q_PRIVATE_SLOT(d_func(), void _q_readData())
00181
00182 #ifndef IRC_NO_DEPRECATED
00183
00184 Q_PRIVATE_SLOT(d_func(), void _q_joined(const QString&));
00185 Q_PRIVATE_SLOT(d_func(), void _q_parted(const QString&, const QString&));
00186 Q_PRIVATE_SLOT(d_func(), void _q_quit(const QString&, const QString&));
00187 Q_PRIVATE_SLOT(d_func(), void _q_nickChanged(const QString&, const QString&));
00188 Q_PRIVATE_SLOT(d_func(), void _q_modeChanged(const QString&, const QString&, const QString&));
00189 Q_PRIVATE_SLOT(d_func(), void _q_topicChanged(const QString&, const QString&));
00190 Q_PRIVATE_SLOT(d_func(), void _q_invited(const QString&, const QString&, const QString&));
00191 Q_PRIVATE_SLOT(d_func(), void _q_kicked(const QString&, const QString&, const QString&));
00192 Q_PRIVATE_SLOT(d_func(), void _q_messageReceived(const QString&, const QString&));
00193 Q_PRIVATE_SLOT(d_func(), void _q_noticeReceived(const QString&, const QString&));
00194 Q_PRIVATE_SLOT(d_func(), void _q_ctcpRequestReceived(const QString&, const QString&));
00195 Q_PRIVATE_SLOT(d_func(), void _q_ctcpReplyReceived(const QString&, const QString&));
00196 Q_PRIVATE_SLOT(d_func(), void _q_ctcpActionReceived(const QString&, const QString&));
00197 Q_PRIVATE_SLOT(d_func(), void _q_numericMessageReceived(const QString&, uint code, const QStringList&));
00198 Q_PRIVATE_SLOT(d_func(), void _q_unknownMessageReceived(const QString&, const QStringList&));
00199 #endif // IRC_NO_DEPRECATED
00200
00201 friend class Buffer;
00202 friend class BufferPrivate;
00203 };
00204 }
00205
00206 #ifndef QT_NO_DEBUG_STREAM
00207 IRC_EXPORT QDebug operator<<(QDebug debug, const Irc::Session* session);
00208 #endif // QT_NO_DEBUG_STREAM
00209
00210 Q_DECLARE_OPERATORS_FOR_FLAGS(Irc::Session::Options)
00211
00212 #endif // IRC_SESSION_H