From ad80f928b25b689f45eb80609b583305bb81c900 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Fri, 4 Feb 2011 20:29:06 -0800 Subject: [PATCH] Implemented basic sender channel mode prefixes. --- src/uisupport/uistyle.cpp | 35 ++++++++++++++++++++++++++++++++--- 1 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index b08134b..878836d 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include +#include "client.h" #include "buffersettings.h" #include "iconloader.h" #include "qssparser.h" @@ -687,6 +688,18 @@ QString UiStyle::StyledMessage::decoratedTimestamp() const { return timestamp().toLocalTime().toString(UiStyle::timestampFormatString()); } +static QMap defaultSenderPrefixes() { + QMap map; + map.insert( 'q', "~" ); + map.insert( 'a', "&" ); + map.insert( 'o', "@" ); + map.insert( 'h', "%" ); + map.insert( 'v', "+" ); + return map; +} + +static const QMap senderPrefixes = defaultSenderPrefixes(); + QString UiStyle::StyledMessage::plainSender() const { switch(type()) { case Message::Plain: @@ -698,11 +711,27 @@ QString UiStyle::StyledMessage::plainSender() const { } QString UiStyle::StyledMessage::decoratedSender() const { + QString sender = plainSender(); + if (sender.length() && bufferInfo().type() & BufferInfo::ChannelBuffer) { + const Network *net = Client::network(bufferInfo().networkId()); + if (net) { + IrcChannel *channel = net->ircChannel(bufferInfo().bufferName()); + if (channel) { + QString modes = channel->userModes(sender); + if (modes.length() > 0) { + const char mode = modes.at(0).toAscii(); + if (senderPrefixes.contains(mode)) { + sender = senderPrefixes[mode] + sender; + } + } + } + } + } switch(type()) { case Message::Plain: - return tr("<%1>").arg(plainSender()); break; + return tr("<%1>").arg(sender); break; case Message::Notice: - return tr("[%1]").arg(plainSender()); break; + return tr("[%1]").arg(sender); break; case Message::Action: return tr("-*-"); break; case Message::Nick: @@ -736,7 +765,7 @@ QString UiStyle::StyledMessage::decoratedSender() const { case Message::Invite: return tr("->"); break; default: - return tr("%1").arg(plainSender()); + return tr("%1").arg(sender); } } -- 1.6.1