added some more ctcp handlers
[quassel.git] / core / server.h
index 90763ac..d4fbfd2 100644 (file)
@@ -47,6 +47,9 @@ class Server : public QThread {
     // serverState state();
     bool isConnected() { return socket.state() == QAbstractSocket::ConnectedState; }
     QString getNetwork() { return network; }
+    QStringList providesUserHandlers();
+
+    enum CtcpType {CtcpQuery, CtcpReply};
 
   public slots:
     // void setServerOptions();
@@ -64,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);
 
@@ -74,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);
 
@@ -108,6 +111,7 @@ class Server : public QThread {
     void handleUserSay(QString, QString);
     void handleUserTopic(QString, QString);
     void handleUserVoice(QString, QString);
+    void handleUserMe(QString, QString);
 
     /* void handleServer(QString, QStringList); */
     void handleServerJoin(QString, QStringList);
@@ -127,9 +131,16 @@ 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:
     QString network;
@@ -147,6 +158,18 @@ class Server : public QThread {
     void handleServerMsg(QString rawMsg);
     void handleUserInput(QString buffer, QString usrMsg);
 
+    // CTCP Stuff
+    QString XDELIM;
+    QHash<QString, QString> ctcpMDequoteHash;
+    QHash<QString, QString> 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 {