From: Manuel Nickschas Date: Sun, 14 Dec 2008 00:24:56 +0000 (+0100) Subject: Make channel names in ChatView left-clickable as well X-Git-Tag: 0.4.0~369 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=7858f42f5c3028392feeb58398e3d15eab6c00ec;hp=7ea9c498bfb975a95c11d6ddc28835840cf3353d Make channel names in ChatView left-clickable as well --- diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index be792c97..7e6d0e18 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -28,6 +28,7 @@ #include #include +#include "buffermodel.h" #include "bufferview.h" #include "chatitem.h" #include "chatlinemodel.h" @@ -511,9 +512,18 @@ void ContentsChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clic 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 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; }