From: Marcus Eggenberger Date: Mon, 11 Aug 2008 12:34:59 +0000 (+0200) Subject: Fixing BR # 204 - double click on the sender column in the chatmonitor to switch... X-Git-Tag: 0.3.0~69 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=3e85aa859e7533ec910f8b2efe4a8abd801d3a47 Fixing BR # 204 - double click on the sender column in the chatmonitor to switch to that buffer --- diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 38561cc8..777e809a 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -774,11 +774,10 @@ void NetworkModel::networkRemoved(const NetworkId &networkId) { } QModelIndex NetworkModel::bufferIndex(BufferId bufferId) { - BufferItem *bufferItem = findBufferItem(bufferId); - if(bufferItem) - return indexByItem(bufferItem); - else + if(!_bufferItemCache.contains(bufferId)) return QModelIndex(); + + return indexByItem(_bufferItemCache[bufferId]); } BufferItem *NetworkModel::findBufferItem(const BufferInfo &bufferInfo) { diff --git a/src/qtui/chatmonitorview.cpp b/src/qtui/chatmonitorview.cpp index 6b9fe601..6d5d6679 100644 --- a/src/qtui/chatmonitorview.cpp +++ b/src/qtui/chatmonitorview.cpp @@ -26,7 +26,12 @@ #include "chatmonitorfilter.h" #include "chatlinemodel.h" +#include "chatitem.h" #include "chatscene.h" +#include "client.h" +#include "networkmodel.h" +#include "buffermodel.h" +#include "messagemodel.h" #include "qtuisettings.h" ChatMonitorView::ChatMonitorView(ChatMonitorFilter *filter, QWidget *parent) @@ -55,6 +60,23 @@ void ChatMonitorView::contextMenuEvent(QContextMenuEvent *event) { contextMenu.exec(QCursor::pos()); } +void ChatMonitorView::mouseDoubleClickEvent(QMouseEvent *event) { + if(scene()->sectionByScenePos(event->pos()) != ChatLineModel::SenderColumn) + return; + + //ChatItem *chatItem = static_cast(itemAt(event->pos())); + ChatItem *chatItem = dynamic_cast(itemAt(event->pos())); + BufferId bufferId = chatItem->data(MessageModel::BufferIdRole).value(); + if(!bufferId.isValid()) + return; + + QModelIndex bufferIdx = Client::networkModel()->bufferIndex(bufferId); + if(!bufferIdx.isValid()) + return; + + Client::bufferModel()->setCurrentIndex(Client::bufferModel()->mapFromSource(bufferIdx)); +} + void ChatMonitorView::showFieldsChanged(bool checked) { QAction *showAction = qobject_cast(sender()); if(!showAction) diff --git a/src/qtui/chatmonitorview.h b/src/qtui/chatmonitorview.h index bf0b3346..5bb0eb04 100644 --- a/src/qtui/chatmonitorview.h +++ b/src/qtui/chatmonitorview.h @@ -33,6 +33,7 @@ public: protected: virtual void contextMenuEvent(QContextMenuEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); private slots: void showFieldsChanged(bool checked);