- Fixed Bug #22 (at least for CTCP)
[quassel.git] / core / server.h
index b2fb230..9664151 100644 (file)
@@ -49,6 +49,8 @@ class Server : public QThread {
     QString getNetwork() { return network; }
     QStringList providesUserHandlers();
 
+    enum CtcpType {CtcpQuery, CtcpReply};
+
   public slots:
     // void setServerOptions();
     void sendState();
@@ -65,7 +67,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);
 
@@ -75,7 +78,6 @@ 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);
 
@@ -128,10 +130,14 @@ class Server : public QThread {
     void handleServer332(QString, QStringList);   // RPL_TOPIC
     void handleServer333(QString, QStringList);   // Topic set by...
     void handleServer353(QString, QStringList);   // RPL_NAMREPLY
-    void handleServer433(QString, QStringList);  // RPL_NICKNAMEINUSER
+    void handleServer432(QString, QStringList);   // ERR_ERRONEUSNICKNAME
+    void handleServer433(QString, QStringList);   // ERR_NICKNAMEINUSE
+
+    void handleCtcpAction(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:
     QString network;
@@ -149,6 +155,11 @@ class Server : public QThread {
     void handleServerMsg(QString rawMsg);
     void handleUserInput(QString buffer, QString usrMsg);
 
+    QHash<QString, QString> ctcpMDequoteHash;
+    QString ctcpDequote(QString);
+    QString ctcpXdelimDequote(QString);
+    QStringList parseCtcp(CtcpType, QString, QString, QString);    
+
     QString updateNickFromMask(QString mask);
 
     class ParseError : public Exception {