#include <QTextLayout>
#include <QMenu>
+#include "buffermodel.h"
#include "bufferview.h"
#include "chatitem.h"
#include "chatlinemodel.h"
str = "http://" + str;
QDesktopServices::openUrl(QUrl::fromEncoded(str.toUtf8(), QUrl::TolerantMode));
break;
- case Clickable::Channel:
- // TODO join or whatever...
+ case Clickable::Channel: {
+ NetworkId networkId = Client::networkModel()->networkId(data(MessageModel::BufferIdRole).value<BufferId>());
+ BufferId bufId = Client::networkModel()->bufferId(networkId, str);
+ if(bufId.isValid()) {
+ QModelIndex targetIdx = Client::networkModel()->bufferIndex(bufId);
+ Client::bufferModel()->switchToBuffer(bufId);
+ if(!targetIdx.data(NetworkModel::ItemActiveRole).toBool())
+ Client::userInput(BufferInfo::fakeStatusBuffer(networkId), QString("/JOIN %1").arg(str));
+ } else
+ Client::userInput(BufferInfo::fakeStatusBuffer(networkId), QString("/JOIN %1").arg(str));
break;
+ }
default:
break;
}
onClickable = true;
showWebPreview(click);
} else if(click.type == Clickable::Channel) {
- // don't make clickable if it's our own name
QString name = data(ChatLineModel::DisplayRole).toString().mid(click.start, click.length);
- BufferId myId = data(MessageModel::BufferIdRole).value<BufferId>();
- if(Client::networkModel()->bufferName(myId) != name)
- onClickable = true;
+ // don't make clickable if it could be a #number
+ if(!QRegExp("^#\\d+$").exactMatch(name)) {
+ // don't make clickable if it's our own name
+ BufferId myId = data(MessageModel::BufferIdRole).value<BufferId>();
+ if(Client::networkModel()->bufferName(myId) != name)
+ onClickable = true;
+ }
}
if(onClickable) {
setCursor(Qt::PointingHandCursor);