+// Hmm... we never used this...
+void Client::recvStatusMsg(QString /*net*/, QString /*msg*/) {
+ //recvMessage(net, Message::server("", QString("[STATUS] %1").arg(msg)));
+}
+
+void Client::recvMessage(const Message &msg_) {
+ Message msg = msg_;
+ messageProcessor()->process(msg);
+}
+
+void Client::receiveBacklog(BufferId bufferId, const QVariantList &msgs) {
+ //QTime start = QTime::currentTime();
+ QList<Message> msglist;
+ foreach(QVariant v, msgs) {
+ msglist << v.value<Message>();
+ }
+ messageProcessor()->process(msglist);
+ //qDebug() << "processed" << msgs.count() << "backlog lines in" << start.msecsTo(QTime::currentTime());
+}
+
+// TODO optimize checkForHighlight
+void Client::checkForHighlight(Message &msg) {
+ if(!((msg.type() & (Message::Plain | Message::Notice | Message::Action)) && !(msg.flags() & Message::Self)))
+ return;
+
+ NotificationSettings notificationSettings;
+ const Network *net = network(msg.bufferInfo().networkId());
+ if(net && !net->myNick().isEmpty()) {
+ QStringList nickList;
+ if(notificationSettings.highlightNick() == NotificationSettings::CurrentNick) {
+ nickList << net->myNick();
+ } else if(notificationSettings.highlightNick() == NotificationSettings::AllNicks) {
+ const Identity *myIdentity = identity(net->identity());
+ if(myIdentity)
+ nickList = myIdentity->nicks();
+ }
+ foreach(QString nickname, nickList) {
+ QRegExp nickRegExp("^(.*\\W)?" + QRegExp::escape(nickname) + "(\\W.*)?$");
+ if(nickRegExp.exactMatch(msg.contents())) {
+ msg.setFlags(msg.flags() | Message::Highlight);
+ return;
+ }
+ }
+
+ foreach(QVariant highlight, notificationSettings.highlightList()) {
+ QVariantMap highlightRule = highlight.toMap();
+ if(!highlightRule["enable"].toBool())
+ continue;
+ Qt::CaseSensitivity caseSensitivity = highlightRule["cs"].toBool() ? Qt::CaseSensitive : Qt::CaseInsensitive;
+ QString name = highlightRule["name"].toString();
+ QRegExp userRegExp;
+ if(highlightRule["regex"].toBool()) {
+ userRegExp = QRegExp(name, caseSensitivity);
+ } else {
+ userRegExp = QRegExp("^(.*\\W)?" + QRegExp::escape(name) + "(\\W.*)?$", caseSensitivity);
+ }
+ if(userRegExp.exactMatch(msg.contents())) {
+ msg.setFlags(msg.flags() | Message::Highlight);
+ return;
+ }