X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=9bdb3c674fee457585333dbfdda4436f80e10d8a;hp=3d7596dfb46dc97cb467f0f0dce73979096fe36e;hb=fe4b38e66592f11fdf4c4651863968983daecd2d;hpb=830373184d79059e6cbd65f605ada3c52c93e5ce diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 3d7596df..9bdb3c67 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -22,6 +22,7 @@ #include "util.h" #include "coresession.h" +#include "coreirclisthelper.h" #include "networkconnection.h" #include "network.h" #include "identity.h" @@ -144,7 +145,7 @@ void IrcServerHandler::defaultHandler(QString cmd, const QString &prefix, const break; } // Ignore these commands. - case 366: case 376: + case 321: case 366: case 376: break; // Everything else will be marked in red, so we can add them somewhere. @@ -722,6 +723,37 @@ void IrcServerHandler::handle320(const QString &prefix, const QList emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(serverDecode(params).join(" "))); } +/* RPL_LIST - " <# visible> :" */ +void IrcServerHandler::handle322(const QString &prefix, const QList ¶ms) { + Q_UNUSED(prefix) + QString channelName; + quint32 userCount = 0; + QString topic; + + int paramCount = params.count(); + switch(paramCount) { + case 3: + topic = serverDecode(params[2]); + case 2: + userCount = serverDecode(params[1]).toUInt(); + case 1: + channelName = serverDecode(params[0]); + default: + break; + } + if(!networkConnection()->coreSession()->ircListHelper()->addChannel(network()->networkId(), channelName, userCount, topic)) + emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Channel %1 has %2 users. Topic is: %3").arg(channelName).arg(userCount).arg(topic)); +} + +/* RPL_LISTEND ":End of LIST" */ +void IrcServerHandler::handle323(const QString &prefix, const QList ¶ms) { + Q_UNUSED(prefix) + Q_UNUSED(params) + + if(!networkConnection()->coreSession()->ircListHelper()->endOfChannelList(network()->networkId())) + emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("End of channel list")); +} + /* RPL_CHANNELMODEIS - " " */ void IrcServerHandler::handle324(const QString &prefix, const QList ¶ms) { Q_UNUSED(prefix);