From: Sebastian Goth Date: Sat, 30 Jan 2010 21:46:14 +0000 (+0100) Subject: Make sender column clickable X-Git-Tag: 0.6-beta1~58 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=6353231ed1d32a5be3580ba60a06d9cf588ad877 Make sender column clickable Doubleclicking the sender switches to a querybuffer to that user. Still somewhat broken since not-yet-existing buffers are created with the first doubleclick and the switch will only work with a second. This will hopefully get fixed soon. --- diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 4855f0c1..03a5ddc2 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -387,6 +387,25 @@ void SenderChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op } } +void SenderChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clickMode) { + if(clickMode == ChatScene::DoubleClick) { + BufferInfo curBufInfo = Client::networkModel()->bufferInfo(data(MessageModel::BufferIdRole).value()); + 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)); + } + } + } + else + ChatItem::handleClick(pos, clickMode); +} + // ************************************************************ // ContentsChatItem // ************************************************************ diff --git a/src/qtui/chatitem.h b/src/qtui/chatitem.h index 0e6a3ded..1184740c 100644 --- a/src/qtui/chatitem.h +++ b/src/qtui/chatitem.h @@ -156,6 +156,7 @@ class SenderChatItem : public ChatItem { public: SenderChatItem(const QRectF &boundingRect, ChatLine *parent) : ChatItem(boundingRect, parent) {} virtual inline ChatLineModel::ColumnType column() const { return ChatLineModel::SenderColumn; } + virtual void handleClick(const QPointF &pos, ChatScene::ClickMode clickMode); protected: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);