00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef IRC_SESSION_H
00018 #define IRC_SESSION_H
00019
00020 #include <ircglobal.h>
00021 #include <QObject>
00022
00023 QT_FORWARD_DECLARE_CLASS(QHostAddress)
00024 QT_FORWARD_DECLARE_CLASS(QNetworkProxy)
00025 QT_FORWARD_DECLARE_CLASS(QAbstractSocket)
00026
00027 namespace Irc
00028 {
00029 class SessionPrivate;
00030
00031 class IRC_EXPORT Session : public QObject
00032 {
00033 Q_OBJECT
00034 Q_PROPERTY(QStringList autoJoinChannels READ autoJoinChannels WRITE setAutoJoinChannels)
00035 Q_PROPERTY(int autoReconnectDelay READ autoReconnectDelay WRITE setAutoReconnectDelay)
00036 Q_PROPERTY(bool connected READ isConnected)
00037 Q_PROPERTY(QByteArray encoding READ encoding WRITE setEncoding)
00038 Q_PROPERTY(QString ident READ ident WRITE setIdent)
00039 Q_PROPERTY(QString nick READ nick WRITE setNick)
00040 Q_PROPERTY(QString password READ password WRITE setPassword)
00041 Q_PROPERTY(QString realName READ realName WRITE setRealName)
00042
00043 public:
00044 Session(QObject* parent = 0);
00045 ~Session();
00046
00047 QStringList autoJoinChannels() const;
00048 void addAutoJoinChannel(const QString& channel);
00049 void removeAutoJoinChannel(const QString& channel);
00050 void setAutoJoinChannels(const QStringList& channels);
00051
00052 int autoReconnectDelay() const;
00053 void setAutoReconnectDelay(int seconds);
00054
00055 QByteArray encoding() const;
00056 void setEncoding(const QByteArray& encoding);
00057
00058 QString ident() const;
00059 void setIdent(const QString& ident);
00060
00061 QString nick() const;
00062
00063 QString password() const;
00064 void setPassword(const QString& password);
00065
00066 QString realName() const;
00067 void setRealName(const QString& realName);
00068
00069 QString host() const;
00070 quint16 port() const;
00071
00072 enum Option
00073 {
00074 StripNicks = 0x1
00075 };
00076 Q_DECLARE_FLAGS(Options, Option)
00077
00078 Options options() const;
00079 void setOptions(Options options);
00080
00081 void connectSlotsByName(const QObject* receiver);
00082
00083 bool isConnected() const;
00084
00085 QAbstractSocket* socket() const;
00086 void setSocket(QAbstractSocket* socket);
00087
00088 public Q_SLOTS:
00089 void setNick(const QString& nick);
00090
00091 void connectToServer(const QString& hostName, quint16 port = 6667);
00092 void connectToServer(const QHostAddress& address, quint16 port = 6667);
00093 void disconnectFromServer();
00094
00095 bool sendRaw(const QString& message);
00096 bool cmdJoin(const QString& channel, const QString& key = QString());
00097 bool cmdPart(const QString& channel, const QString& reason = QString());
00098 bool cmdQuit(const QString& reason = QString());
00099 bool cmdNames(const QString& channel);
00100 bool cmdList(const QString& channel = QString());
00101 bool cmdWhois(const QString& nick);
00102 bool cmdMode(const QString& target, const QString& mode = QString());
00103 bool cmdTopic(const QString& channel, const QString& topic = QString());
00104 bool cmdInvite(const QString& nick, const QString& channel);
00105 bool cmdKick(const QString& nick, const QString& channel, const QString& reason = QString());
00106 bool cmdMessage(const QString& receiver, const QString& message);
00107 bool cmdNotice(const QString& receiver, const QString& notice);
00108 bool cmdCtcpAction(const QString& receiver, const QString& action);
00109 bool cmdCtcpRequest(const QString& nick, const QString& request);
00110 bool cmdCtcpReply(const QString& nick, const QString& reply);
00111
00112 Q_SIGNALS:
00113 void connected();
00114 void disconnected();
00115
00116 void msgJoined(const QString& origin, const QString& channel);
00117 void msgParted(const QString& origin, const QString& channel, const QString& message);
00118 void msgQuit(const QString& origin, const QString& message);
00119 void msgNickChanged(const QString& origin, const QString& nick);
00120 void msgModeChanged(const QString& origin, const QString& receiver, const QString& mode, const QString& args);
00121 void msgTopicChanged(const QString& origin, const QString& channel, const QString& topic);
00122 void msgInvited(const QString& origin, const QString& receiver, const QString& channel);
00123 void msgKicked(const QString& origin, const QString& channel, const QString& nick, const QString& message);
00124 void msgMessageReceived(const QString& origin, const QString& receiver, const QString& message);
00125 void msgNoticeReceived(const QString& origin, const QString& receiver, const QString& notice);
00126 void msgCtcpRequestReceived(const QString& origin, const QString& request);
00127 void msgCtcpReplyReceived(const QString& origin, const QString& reply);
00128 void msgCtcpActionReceived(const QString& origin, const QString& receiver, const QString& action);
00129 void msgNumericMessageReceived(const QString& origin, uint code, const QStringList& params);
00130 void msgUnknownMessageReceived(const QString& origin, const QStringList& params);
00131
00132 private:
00133 SessionPrivate* const d_ptr;
00134 Q_DECLARE_PRIVATE(Session)
00135 Q_DISABLE_COPY(Session)
00136
00137 Q_PRIVATE_SLOT(d_func(), void _q_connected())
00138 Q_PRIVATE_SLOT(d_func(), void _q_disconnected())
00139 Q_PRIVATE_SLOT(d_func(), void _q_reconnect())
00140 Q_PRIVATE_SLOT(d_func(), void _q_error())
00141 Q_PRIVATE_SLOT(d_func(), void _q_state())
00142 Q_PRIVATE_SLOT(d_func(), void _q_readData())
00143 };
00144 }
00145
00146 Q_DECLARE_OPERATORS_FOR_FLAGS(Irc::Session::Options)
00147
00148 #endif // IRC_SESSION_H