X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=64349690630d9a555f117c38c035fa758cc36cc1;hp=1edbb241705276df456e4d594bedd84a426084f2;hb=2261829376bf9f404f2b27e77050202e9bb3b1ca;hpb=b8e94e1fbe17e2c968339e78a58b7e95331bd4d5 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 1edbb241..64349690 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -744,6 +744,16 @@ void ChannelBufferItem::attachIrcChannel(IrcChannel *ircChannel) emit dataChanged(); } +QString ChannelBufferItem::nickChannelModes(const QString &nick) const +{ + if (!_ircChannel) { + qDebug() << Q_FUNC_INFO << "IrcChannel not set, can't get user modes"; + return QString(); + } + + return _ircChannel->userModes(nick); +} + void ChannelBufferItem::ircChannelParted() { @@ -1065,6 +1075,9 @@ QString IrcUserItem::toolTip(int column) const }; tooltip << ""; + addRow(tr("Modes"), + NetworkItem::escapeHTML(channelModes()), + !channelModes().isEmpty()); if (_ircUser->isAway()) { QString awayMessage(tr("(unknown)")); if(!_ircUser->awayMessage().isEmpty()) { @@ -1128,6 +1141,21 @@ QString IrcUserItem::toolTip(int column) const return strTooltip; } +QString IrcUserItem::channelModes() const +{ + // IrcUserItems are parented to UserCategoryItem, which are parented to ChannelBufferItem. + // We want the channel buffer item in order to get the channel-specific user modes. + UserCategoryItem *category = qobject_cast(parent()); + if (!category) + return QString(); + + ChannelBufferItem *channel = qobject_cast(category->parent()); + if (!channel) + return QString(); + + return channel->nickChannelModes(nickName()); +} + /***************************************** * NetworkModel