X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=8c012acc781273d34b9137a85ec0ac580247f1e5;hp=2ca9627ccd0e0d24f8ac0f55e928b84813eb8873;hb=dba66762993507168b1a3de25cfd2d7bff0ff969;hpb=c4b49f3777a7b841ad4701e9c03a69dd1ffadc66 diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 2ca9627c..8c012acc 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -366,7 +366,8 @@ void CoreSession::processMessages() Q_ASSERT(!createBuffer); bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); if(Core::storeMessage(msg)) emit displayMsg(msg); } @@ -390,7 +391,8 @@ void CoreSession::processMessages() } bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); messages << msg; } @@ -406,7 +408,8 @@ void CoreSession::processMessages() // add the StatusBuffer to the Cache in case there are more Messages for the original target bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); messages << msg; } @@ -421,6 +424,25 @@ void CoreSession::processMessages() _messageQueue.clear(); } +QString CoreSession::senderPrefixes(const QString &sender, const BufferInfo &bufferInfo) const +{ + CoreNetwork *currentNetwork = network(bufferInfo.networkId()); + if (!currentNetwork) { + return ""; + } + + if (bufferInfo.type() != BufferInfo::ChannelBuffer) { + return ""; + } + + IrcChannel *currentChannel = currentNetwork->ircChannel(bufferInfo.bufferName()); + if (!currentChannel) { + return ""; + } + + const QString modes = currentChannel->userModes(nickFromMask(sender).toLower()); + return currentNetwork->modesToPrefixes(modes); +} Protocol::SessionState CoreSession::sessionState() const {