X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=865855ec6dc738f17cfc3931528ceb5cec2e4978;hp=7d4aeff44ba484f410593d6721bd225cf22a2c83;hb=7a814314a9bb879f3af6148ce74f31d6427650db;hpb=508a14a5632d3a2a3d65c20dda7c942f8f120f9c diff --git a/src/client/client.cpp b/src/client/client.cpp index 7d4aeff4..865855ec 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -543,11 +543,36 @@ AbstractUiMsg *Client::layoutMsg(const Message &msg) { } void Client::checkForHighlight(Message &msg) { + NotificationSettings notificationSettings; const Network *net = network(msg.bufferInfo().networkId()); if(net && !net->myNick().isEmpty()) { - QRegExp nickRegExp("^(.*\\W)?" + QRegExp::escape(net->myNick()) + "(\\W.*)?$"); - if((msg.type() & (Message::Plain | Message::Notice | Message::Action)) && !(msg.flags() & Message::Self) && nickRegExp.exactMatch(msg.text())) - msg.setFlags(msg.flags() | Message::Highlight); + if(notificationSettings.highlightCurrentNick()) { + QRegExp nickRegExp("^(.*\\W)?" + QRegExp::escape(net->myNick()) + "(\\W.*)?$"); + if((msg.type() & (Message::Plain | Message::Notice | Message::Action)) + && !(msg.flags() & Message::Self) + && nickRegExp.exactMatch(msg.text())) { + msg.setFlags(msg.flags() | Message::Highlight); + return; + } + } + foreach(QVariant highlight, notificationSettings.highlightList()) { + QVariantMap highlightRule = highlight.toMap(); + if(!highlightRule["enable"].toBool()) + continue; + QString name = highlightRule["name"].toString(); + QRegExp userRegExp; + if(highlightRule["regex"].toBool()) { + userRegExp = QRegExp(name); + } else { + userRegExp = QRegExp("^(.*\\W)?" + QRegExp::escape(name) + "(\\W.*)?$"); + } + if((msg.type() & (Message::Plain | Message::Notice | Message::Action)) + && !(msg.flags() & Message::Self) + && userRegExp.exactMatch(msg.text())) { + msg.setFlags(msg.flags() | Message::Highlight); + return; + } + } } }