X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=d83e42093e8132ee873c2361bf9b425ace14af08;hp=ab5c85c9810b4a44901fdb65e952db6fd64eb095;hb=1cad7d10240a398c11af0043720d675e631f016f;hpb=902c95728306e5ba115de84800fc8d5d239c9d62 diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index ab5c85c9..d83e4209 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -153,7 +153,7 @@ void IrcServerHandler::handleJoin(QString prefix, QStringList params) { QString channel = params[0]; IrcUser *ircuser = networkInfo()->updateNickFromMask(prefix); emit displayMsg(Message::Join, channel, channel, prefix); - + qDebug() << "IrcServerHandler::handleJoin()" << prefix << params; ircuser->joinChannel(channel); } @@ -175,6 +175,9 @@ void IrcServerHandler::handleKick(QString prefix, QStringList params) { } void IrcServerHandler::handleMode(QString prefix, QStringList params) { + Q_UNUSED(prefix) + Q_UNUSED(params) + // if(isChannelName(params[0])) { // // TODO only channel-user modes supported by now // QString prefixes = serverSupports["PrefixModes"].toString(); @@ -217,10 +220,11 @@ void IrcServerHandler::handleNick(QString prefix, QStringList params) { QString oldnick = ircuser->nick(); foreach(QString channel, ircuser->channels()) { - if(networkInfo()->isMyNick(oldnick)) - emit displayMsg(Message::Nick, channel, newnick, prefix); - else + if(networkInfo()->isMyNick(oldnick)) { emit displayMsg(Message::Nick, channel, newnick, newnick); + } else { + emit displayMsg(Message::Nick, channel, newnick, prefix); + } } ircuser->setNick(newnick); } @@ -247,40 +251,41 @@ void IrcServerHandler::handlePart(QString prefix, QStringList params) { } void IrcServerHandler::handlePing(QString prefix, QStringList params) { + Q_UNUSED(prefix) emit putCmd("PONG", params); } void IrcServerHandler::handlePrivmsg(QString prefix, QStringList params) { networkInfo()->updateNickFromMask(prefix); - Q_ASSERT(params.count() >= 2); if(params.count()<2) - emit displayMsg(Message::Plain, params[0], "", prefix); - else { - // it's possible to pack multiple privmsgs into one param using ctcp - QStringList messages = server->ctcpHandler()->parse(CtcpHandler::CtcpQuery, prefix, params[0], params[1]); - - // are we the target or is it a channel? - if(networkInfo()->isMyNick(params[0])) { - foreach(QString message, messages) { - if(!message.isEmpty()) { - emit displayMsg(Message::Plain, "", message, prefix, Message::PrivMsg); - } + params << QString(""); + + // it's possible to pack multiple privmsgs into one param using ctcp + QStringList messages = server->ctcpHandler()->parse(CtcpHandler::CtcpQuery, prefix, params[0], params[1]); + + // are we the target or is it a channel? + if(networkInfo()->isMyNick(params[0])) { + foreach(QString message, messages) { + if(!message.isEmpty()) { + emit displayMsg(Message::Plain, "", message, prefix, Message::PrivMsg); } - - } else { - Q_ASSERT(isChannelName(params[0])); // should be channel! - foreach(QString message, messages) { - if(!message.isEmpty()) { - emit displayMsg(Message::Plain, params[0], message, prefix); - } + } + + } else { + Q_ASSERT(isChannelName(params[0])); // should be channel! + foreach(QString message, messages) { + if(!message.isEmpty()) { + emit displayMsg(Message::Plain, params[0], message, prefix); } } } + } void IrcServerHandler::handleQuit(QString prefix, QStringList params) { IrcUser *ircuser = networkInfo()->updateNickFromMask(prefix); Q_ASSERT(ircuser); + qDebug() << "IrcServerHandler:handleQuit" << prefix << params; QString msg; if(params.count()) @@ -288,8 +293,8 @@ void IrcServerHandler::handleQuit(QString prefix, QStringList params) { foreach(QString channel, ircuser->channels()) emit displayMsg(Message::Quit, channel, msg, prefix); - - ircuser->deleteLater(); + + networkInfo()->removeIrcUser(nickFromMask(prefix)); } void IrcServerHandler::handleTopic(QString prefix, QStringList params) { @@ -326,6 +331,7 @@ void IrcServerHandler::handle001(QString prefix, QStringList params) { /* RPL_ISUPPORT */ // TODO Complete 005 handling, also use sensible defaults for non-sent stuff void IrcServerHandler::handle005(QString prefix, QStringList params) { + Q_UNUSED(prefix) QString rpl_isupport_suffix = params.takeLast(); if(rpl_isupport_suffix.toLower() != QString("are supported by this server")) { qWarning() << "Received invalid RPL_ISUPPORT! Suffix is:" << rpl_isupport_suffix << "Excpected: are supported by this server"; @@ -342,23 +348,27 @@ void IrcServerHandler::handle005(QString prefix, QStringList params) { /* RPL_NOTOPIC */ void IrcServerHandler::handle331(QString prefix, QStringList params) { + Q_UNUSED(prefix) networkInfo()->ircChannel(params[0])->setTopic(QString()); emit displayMsg(Message::Server, params[0], tr("No topic is set for %1.").arg(params[0])); } /* RPL_TOPIC */ void IrcServerHandler::handle332(QString prefix, QStringList params) { + Q_UNUSED(prefix) networkInfo()->ircChannel(params[0])->setTopic(params[1]); emit displayMsg(Message::Server, params[0], tr("Topic for %1 is \"%2\"").arg(params[0]).arg(params[1])); } /* Topic set by... */ void IrcServerHandler::handle333(QString prefix, QStringList params) { + Q_UNUSED(prefix) emit displayMsg(Message::Server, params[0], tr("Topic set by %1 on %2").arg(params[1]).arg(QDateTime::fromTime_t(params[2].toUInt()).toString())); } /* RPL_NAMREPLY */ void IrcServerHandler::handle353(QString prefix, QStringList params) { + Q_UNUSED(prefix) params.removeFirst(); // either "=", "*" or "@" indicating a public, private or secret channel QString channelname = params.takeFirst(); @@ -369,7 +379,7 @@ void IrcServerHandler::handle353(QString prefix, QStringList params) { mode = networkInfo()->prefixToMode(nick[0]); nick = nick.mid(1); } - + IrcUser *ircuser = networkInfo()->newIrcUser(nick); ircuser->joinChannel(channelname); @@ -380,6 +390,12 @@ void IrcServerHandler::handle353(QString prefix, QStringList params) { /* ERR_ERRONEUSNICKNAME */ void IrcServerHandler::handle432(QString prefix, QStringList params) { + Q_UNUSED(prefix) + Q_UNUSED(params) + emit displayMsg(Message::Error, "", tr("Your desired nickname contains illegal characters!")); + emit displayMsg(Message::Error, "", tr("Please use /nick to continue your IRC-Session!")); + // FIXME! + // if(params.size() < 2) { // // handle unreal-ircd bug, where unreal ircd doesnt supply a TARGET in ERR_ERRONEUSNICKNAME during registration phase: // // nick @@@ @@ -408,8 +424,12 @@ void IrcServerHandler::handle432(QString prefix, QStringList params) { /* ERR_NICKNAMEINUSE */ void IrcServerHandler::handle433(QString prefix, QStringList params) { -// QString errnick = params[0]; -// emit displayMsg(Message::Error, "", tr("Nick %1 is already taken").arg(errnick)); + Q_UNUSED(prefix) + QString errnick = params[0]; + emit displayMsg(Message::Error, "", tr("Nick %1 is already taken").arg(errnick)); + emit displayMsg(Message::Error, "", tr("Please use /nick to continue your IRC-Session!")); + // FIXME! + // // if there is a problem while connecting to the server -> we handle it // // TODO rely on another source... // if(currentServer.isEmpty()) {