_networkModel = new NetworkModel(this);
connect(this, SIGNAL(bufferUpdated(BufferInfo)),
_networkModel, SLOT(bufferUpdated(BufferInfo)));
+ connect(this, SIGNAL(networkRemoved(NetworkId)),
+ _networkModel, SLOT(networkRemoved(NetworkId)));
_bufferModel = new BufferModel(_networkModel);
}
}
-void Client::recvMessage(const Message &msg) {
+void Client::recvMessage(const Message &message) {
+ Message msg = message;
+ Buffer *b;
+
if(msg.type() == Message::Error) {
- Buffer *b = buffer(msg.bufferInfo().bufferId());
- if(b) {
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
- } else {
- //TODO: display message in the status buffer
+ b = buffer(msg.bufferInfo().bufferId());
+ if(!b) {
+ // FIXME: if buffer doesn't exist, forward the message to the status or current buffer
b = buffer(msg.bufferInfo());
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
}
} else {
- Buffer *b = buffer(msg.bufferInfo());
- b->appendMsg(msg);
- networkModel()->updateBufferActivity(msg);
+ b = buffer(msg.bufferInfo());
}
-
+
+ checkForHighlight(msg);
+ b->appendMsg(msg);
+ networkModel()->updateBufferActivity(msg);
+
if(msg.type() == Message::Plain || msg.type() == Message::Notice || msg.type() == Message::Action) {
const Network *net = network(msg.bufferInfo().networkId());
QString networkName = net != 0
Buffer *b = buffer(id);
foreach(QVariant v, msgs) {
Message msg = v.value<Message>();
+ checkForHighlight(msg);
b->prependMsg(msg);
networkModel()->updateBufferActivity(msg);
if(!layoutQueue.contains(b)) layoutQueue.append(b);
return instance()->mainUi->layoutMsg(msg);
}
+void Client::checkForHighlight(Message &msg) const {
+ 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)) && nickRegExp.exactMatch(msg.text()))
+ msg.setFlags(msg.flags() | Message::Highlight);
+ }
+}