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();
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);
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:
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);
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<QString, Buffer*> buffers;
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 {