BufferInfo curBufInfo = Client::networkModel()->bufferInfo(data(MessageModel::BufferIdRole).value<BufferId>());
QString nick = data(MessageModel::EditRole).toString();
// check if the nick is a valid ircUser
- if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick)) {
- BufferId targetBufId = Client::networkModel()->bufferId(curBufInfo.networkId(), nick);
- if(targetBufId.isValid()) { // querybuffer exists
- Client::bufferModel()->switchToBuffer(targetBufId);
- }
- else { // we create it
- Client::userInput(curBufInfo, QString("/QUERY %1").arg(nick));
- }
- }
+ if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick))
+ Client::bufferModel()->switchToOrStartQuery(curBufInfo.networkId(), nick);
}
else
ChatItem::handleClick(pos, clickMode);
Client::userInput(bufferInfo, QString("/KICK %1").arg(nick));
break;
case NickSwitchTo:
- Client::bufferModel()->switchToBuffer(findQueryBuffer(networkId, nick));
- break;
case NickQuery:
- Client::userInput(bufferInfo, QString("/QUERY %1").arg(nick));
+ Client::bufferModel()->switchToOrStartQuery(networkId, nick);
break;
case NickIgnoreUser:
{
if(!ircUser || !networkId.isValid())
return;
- BufferId bufId = Client::networkModel()->bufferId(networkId, ircUser->nick());
- if(bufId.isValid())
- Client::bufferModel()->switchToBuffer(bufId);
- else
- Client::userInput(index.data(NetworkModel::BufferInfoRole).value<BufferInfo>(), QString("/QUERY %1").arg(ircUser->nick()));
+ Client::bufferModel()->switchToOrStartQuery(networkId, ircUser->nick());
}
void NickView::customEvent(QEvent *event) {