X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=31d5bec8c24b8537b5d7b75af1b3ffcff39c3df4;hb=f66bc9ecb5ebde376da256035db425d7dc0c74d0;hp=ae92b0935d8efade3d1c1f6203838412b0626b77;hpb=fb6f5bcbdebd8660f355a558dd7cc47f6df45965;p=quassel.git diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index ae92b093..31d5bec8 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -228,6 +228,30 @@ void IrcServerHandler::handleMode(const QString &prefix, const QList } else { // pure User Modes + IrcUser *ircUser = network()->newIrcUser(params[0]); + QString modeString(serverDecode(params[1])); + QString addModes; + QString removeModes; + bool add = false; + for(int c = 0; c < modeString.count(); c++) { + if(modeString[c] == '+') { + add = true; + continue; + } + if(modeString[c] == '-') { + add = false; + continue; + } + if(add) + addModes += modeString[c]; + else + removeModes += modeString[c]; + } + if(!addModes.isEmpty()) + ircUser->addUserModes(addModes); + if(!removeModes.isEmpty()) + ircUser->removeUserModes(removeModes); + // FIXME: redirect emit displayMsg(Message::Mode, BufferInfo::StatusBuffer, "", serverDecode(params).join(" "), prefix); }