+void Client::checkForHighlight(Message &msg) {
+ 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);
+ }
+}
+
+void Client::updateLastSeen(BufferId id, const QDateTime &lastSeen) {
+ Buffer *b = buffer(id);
+ if(!b) {
+ qWarning() << "Client::updateLastSeen(): Unknown buffer" << id;
+ return;
+ }
+ b->setLastSeen(lastSeen);
+}
+
+void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) {
+ if(!bufferSyncer()) return;
+ bufferSyncer()->requestSetLastSeen(id, lastSeen);
+}
+
+void Client::bufferRemoved(BufferId bufferId) {
+ QModelIndex current = bufferModel()->currentIndex();
+ if(current.data(NetworkModel::BufferIdRole).value<BufferId>() == bufferId) {
+ // select the status buffer if the currently displayed buffer is about to be removed
+ QModelIndex newCurrent = current.sibling(0,0);
+ bufferModel()->standardSelectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+ bufferModel()->standardSelectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect);
+ }
+
+ networkModel()->removeBuffer(bufferId);
+ if(_buffers.contains(bufferId)) {
+ Buffer *buff = _buffers.take(bufferId);
+ disconnect(buff, 0, this, 0);
+ buff->deleteLater();
+ }
+}
+
+void Client::bufferRenamed(BufferId bufferId, const QString &newName) {
+ QModelIndex bufferIndex = networkModel()->bufferIndex(bufferId);
+ if(bufferIndex.isValid()) {
+ networkModel()->setData(bufferIndex, newName, Qt::DisplayRole);
+ }
+}