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