X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=core%2Fserver.h;h=c17b4d0f34ae9ef830a29b7ce39f6ac24c34924a;hb=7ec4585cecc74ce8d9a94b0e52f00a96d105e79e;hp=ba333d39b0514c77e3ac9739deb9e15e7e7a4839;hpb=d6a96a47a3964b9c0b1ea2413601d70d0d327413;p=quassel.git diff --git a/core/server.h b/core/server.h index ba333d39..c17b4d0f 100644 --- a/core/server.h +++ b/core/server.h @@ -41,12 +41,16 @@ class Server : public QThread { Q_OBJECT public: - Server(QString network); + Server(UserId uid, QString network); ~Server(); + UserId userId() const { return user; } // serverState state(); - bool isConnected() { return socket.state() == QAbstractSocket::ConnectedState; } + bool isConnected() const { return socket.state() == QAbstractSocket::ConnectedState; } QString getNetwork() { return network; } + QStringList providesUserHandlers(); + + enum CtcpType {CtcpQuery, CtcpReply}; public slots: // void setServerOptions(); @@ -64,7 +68,8 @@ class Server : public QThread { void serverState(QString net, VarMap data); void recvRawServerMsg(QString); void displayStatusMsg(QString); - void displayMsg(Message msg); + //void displayMsg(Message msg); + void displayMsg(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None); void connected(QString network); void disconnected(QString network); @@ -74,8 +79,8 @@ class Server : public QThread { void nickUpdated(QString network, QString nick, VarMap props); void modeSet(QString network, QString target, QString mode); void topicSet(QString network, QString buffer, QString topic); - void setNicks(QString network, QString buffer, QStringList nicks); void ownNickSet(QString network, QString newNick); + void queryRequested(QString network, QString nick); private slots: @@ -101,11 +106,13 @@ class Server : public QThread { void handleUserNick(QString, QString); void handleUserOp(QString, QString); void handleUserPart(QString, QString); + void handleUserQuery(QString, QString); void handleUserQuit(QString, QString); void handleUserQuote(QString, QString); void handleUserSay(QString, QString); void handleUserTopic(QString, QString); void handleUserVoice(QString, QString); + void handleUserMe(QString, QString); /* void handleServer(QString, QStringList); */ void handleServerJoin(QString, QStringList); @@ -125,11 +132,19 @@ class Server : public QThread { void handleServer332(QString, QStringList); // RPL_TOPIC void handleServer333(QString, QStringList); // Topic set by... void handleServer353(QString, QStringList); // RPL_NAMREPLY + void handleServer432(QString, QStringList); // ERR_ERRONEUSNICKNAME + void handleServer433(QString, QStringList); // ERR_NICKNAMEINUSE + + void handleCtcpAction(CtcpType, QString, QString, QString); + void handleCtcpPing(CtcpType, QString, QString, QString); + void handleCtcpVersion(CtcpType, QString, QString, QString); void defaultServerHandler(QString cmd, QString prefix, QStringList params); void defaultUserHandler(QString buf, QString cmd, QString msg); + void defaultCtcpHandler(CtcpType ctcptype, QString prefix, QString cmd, QString target, QString param); private: + UserId user; QString network; QTcpSocket socket; //QHash buffers; @@ -145,6 +160,18 @@ class Server : public QThread { void handleServerMsg(QString rawMsg); void handleUserInput(QString buffer, QString usrMsg); + // CTCP Stuff + QString XDELIM; + QHash ctcpMDequoteHash; + QHash ctcpXDelimDequoteHash; + QString ctcpDequote(QString); + QString ctcpXdelimDequote(QString); + QStringList parseCtcp(CtcpType, QString, QString, QString); + + QString ctcpPack(QString ctcpTag, QString message); + void ctcpQuery(QString bufname, QString ctcpTag, QString message); + void ctcpReply(QString bufname, QString ctcpTag, QString message); + QString updateNickFromMask(QString mask); class ParseError : public Exception {