From: Shane Synan Date: Mon, 13 Jun 2016 22:27:58 +0000 (-0400) Subject: Show account information in nick tooltips X-Git-Tag: travis-deploy-test~470^2 X-Git-Url: https://git.quassel-irc.org/?a=commitdiff_plain;h=e41bf8186ac4ccb99647650d9e23ee8ddd136cbf;p=quassel.git Show account information in nick tooltips Add row for account in tooltip based on IrcUser->account(). If not supported, it's ignored. Otherwise, will either show the account name if logged in, or "Not logged in" if known to be logged out. When account() information is available, hide the Whois account reply as it's redundant, and might be out-of-date. --- diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 64349690..aea48bf8 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -569,12 +569,33 @@ QString QueryBufferItem::toolTip(int column) const NetworkItem::escapeHTML(_ircUser->suserHost()), !_ircUser->suserHost().isEmpty()); } + + // Keep track of whether or not the account information's been added. Don't show it twice. + bool accountAdded = false; + if(!_ircUser->account().isEmpty()) { + // IRCv3 account-notify is supported by the core and IRC server. + // Assume logged out (seems to be more common) + QString accountHTML = QString("

%1

").arg(tr("Not logged in")); + + // If account is logged in, replace with the escaped account name. + if (_ircUser->account() != "*") { + accountHTML = NetworkItem::escapeHTML(_ircUser->account()); + } + addRow(NetworkItem::escapeHTML(tr("Account"), true), + accountHTML, + true); + // Mark the row as added + accountAdded = true; + } // whoisServiceReply may return " is identified for this nick", which should be translated. // See https://www.alien.net.au/irc/irc2numerics.html if(_ircUser->whoisServiceReply().endsWith("identified for this nick")) { addRow(NetworkItem::escapeHTML(tr("Account"), true), NetworkItem::escapeHTML(tr("Identified for this nick")), - true); + !accountAdded); + // Don't add the account row again if information's already added via account-notify + // Mark the row as added + accountAdded = true; } else { addRow(NetworkItem::escapeHTML(tr("Service Reply"), true), NetworkItem::escapeHTML(_ircUser->whoisServiceReply()), @@ -1100,12 +1121,33 @@ QString IrcUserItem::toolTip(int column) const NetworkItem::escapeHTML(_ircUser->suserHost()), !_ircUser->suserHost().isEmpty()); } + + // Keep track of whether or not the account information's been added. Don't show it twice. + bool accountAdded = false; + if(!_ircUser->account().isEmpty()) { + // IRCv3 account-notify is supported by the core and IRC server. + // Assume logged out (seems to be more common) + QString accountHTML = QString("

%1

").arg(tr("Not logged in")); + + // If account is logged in, replace with the escaped account name. + if (_ircUser->account() != "*") { + accountHTML = NetworkItem::escapeHTML(_ircUser->account()); + } + addRow(NetworkItem::escapeHTML(tr("Account"), true), + accountHTML, + true); + // Mark the row as added + accountAdded = true; + } // whoisServiceReply may return " is identified for this nick", which should be translated. // See https://www.alien.net.au/irc/irc2numerics.html if(_ircUser->whoisServiceReply().endsWith("identified for this nick")) { addRow(NetworkItem::escapeHTML(tr("Account"), true), NetworkItem::escapeHTML(tr("Identified for this nick")), - true); + !accountAdded); + // Don't add the account row again if information's already added via account-notify + // Mark the row as added + accountAdded = true; } else { addRow(NetworkItem::escapeHTML(tr("Service Reply"), true), NetworkItem::escapeHTML(_ircUser->whoisServiceReply()),