Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void
- Socket::processData(const QString &data)
- {
- kDebug() << data;
- QString line = data;
- QString server;
- QString prefix;
- QString command;
- QStringList params;
- bool isNumeric = false;
- if (line.startsWith(QChar(':'))) {
- prefix = line.mid(1, line.indexOf(QChar(' ')) - 1);
- line.remove(0, prefix.length() + 2);
- }
- command = line.mid(0, line.indexOf(QChar(' ')));
- line.remove(0, command.length() + 1);
- quint16 code = command.toUShort(&isNumeric);
- while (!line.isEmpty()) {
- if (line.startsWith(QChar(':'))) {
- line.remove(0, 1);
- params << line;
- line.clear();
- } else {
- QString param = line.mid(0, line.indexOf(QChar(' ')));
- line.remove(0, param.length() + 1);
- params << param;
- }
- }
- kDebug() << params;
- if (command == "JOIN") {
- QString nick = Rfc2812::nickFromMask(prefix);
- if (nick == currentNick()) {
- emit onSelfJoin(params[0]);
- } else {
- emit onUserJoin(prefix, params[0]);
- }
- } else if (command == "PART") {
- emit onUserPart(prefix, params[0], params[1]);
- } else if (command == "PRIVMSG") {
- QString from = Rfc2812::nickFromMask(prefix);
- QString channel;
- QString to;
- QString message = params[1];
- if (Rfc2812::isValidChannel(params[0])) {
- channel = params[0];
- } else {
- to = params[0];
- }
- emit onPrivmsg(channel, from, to, message);
- } else if (command == "NOTICE") {
- if (params[0] == "AUTH") {
- emit onNoticeAuth(params[1]);
- } else {
- emit onNotice(params[1]);
- }
- } else if (command == "QUIT") {
- emit onUserQuit(prefix, params[0]);
- } else if (isNumeric) {
- switch (code) {
- case RPL_TOPIC: {
- emit onTopic(params[1], params[2]);
- break;
- }
- case RPL_NAMREPLY: {
- emit onNameReply(params[2], params[3]);
- break;
- }
- default: {
- break;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment