From: Manuel Nickschas Date: Wed, 19 Nov 2008 08:00:22 +0000 (+0100) Subject: Moar context menu actions, integrate the ChatMonitorView context menu into the global one X-Git-Tag: 0.4.0~423 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=16e4a21c1292448c1a524010d70f6e59b84802f4 Moar context menu actions, integrate the ChatMonitorView context menu into the global one --- diff --git a/src/qtui/bufferwidget.cpp b/src/qtui/bufferwidget.cpp index 1dbe7b73..69718d52 100644 --- a/src/qtui/bufferwidget.cpp +++ b/src/qtui/bufferwidget.cpp @@ -145,13 +145,13 @@ void BufferWidget::zoomOriginal() { view->zoomOriginal(); } -void BufferWidget::addActionsToMenu(QMenu *menu) { +void BufferWidget::addActionsToMenu(QMenu *menu, const QPointF &pos) { + Q_UNUSED(pos); ActionCollection *coll = QtUi::actionCollection(); menu->addSeparator(); menu->addAction(coll->action("ZoomInChatView")); menu->addAction(coll->action("ZoomOutChatView")); menu->addAction(coll->action("ZoomOriginalChatView")); - } bool BufferWidget::eventFilter(QObject *watched, QEvent *event) { diff --git a/src/qtui/bufferwidget.h b/src/qtui/bufferwidget.h index fd8c9ac3..5e1af508 100644 --- a/src/qtui/bufferwidget.h +++ b/src/qtui/bufferwidget.h @@ -39,7 +39,7 @@ public: virtual bool eventFilter(QObject *watched, QEvent *event); inline ChatViewSearchBar *searchBar() const { return ui.searchBar; } - void addActionsToMenu(QMenu *); + void addActionsToMenu(QMenu *, const QPointF &pos); protected: virtual AbstractChatView *createChatView(BufferId); diff --git a/src/qtui/chatmonitorview.cpp b/src/qtui/chatmonitorview.cpp index d5c37312..6e007782 100644 --- a/src/qtui/chatmonitorview.cpp +++ b/src/qtui/chatmonitorview.cpp @@ -41,28 +41,26 @@ ChatMonitorView::ChatMonitorView(ChatMonitorFilter *filter, QWidget *parent) scene()->setSenderCutoffMode(ChatScene::CutoffLeft); } -void ChatMonitorView::contextMenuEvent(QContextMenuEvent *event) { - QMenu contextMenu(this); - - QAction *showOwnNicksAction = contextMenu.addAction(tr("Show own messages"), _filter, SLOT(setShowOwnMessages(bool))); +void ChatMonitorView::addActionsToMenu(QMenu *menu, const QPointF &pos) { + ChatView::addActionsToMenu(menu, pos); + menu->addSeparator(); + QAction *showOwnNicksAction = menu->addAction(tr("Show Own Messages"), _filter, SLOT(setShowOwnMessages(bool))); showOwnNicksAction->setCheckable(true); showOwnNicksAction->setChecked(_filter->showOwnMessages()); - - if(scene()->columnByScenePos(event->pos()) == ChatLineModel::SenderColumn) { - contextMenu.addSeparator(); - QAction *showNetworkAction = contextMenu.addAction(tr("Show network name"), this, SLOT(showFieldsChanged(bool))); + if(scene()->columnByScenePos(pos) == ChatLineModel::SenderColumn) { + menu->addSeparator(); + + QAction *showNetworkAction = menu->addAction(tr("Show Network Name"), this, SLOT(showFieldsChanged(bool))); showNetworkAction->setCheckable(true); showNetworkAction->setChecked(_filter->showFields() & ChatMonitorFilter::NetworkField); showNetworkAction->setData(ChatMonitorFilter::NetworkField); - QAction *showBufferAction = contextMenu.addAction(tr("Show buffer name"), this, SLOT(showFieldsChanged(bool))); + QAction *showBufferAction = menu->addAction(tr("Show Buffer Name"), this, SLOT(showFieldsChanged(bool))); showBufferAction->setCheckable(true); showBufferAction->setChecked(_filter->showFields() & ChatMonitorFilter::BufferField); showBufferAction->setData(ChatMonitorFilter::BufferField); } - - contextMenu.exec(QCursor::pos()); } void ChatMonitorView::mouseDoubleClickEvent(QMouseEvent *event) { diff --git a/src/qtui/chatmonitorview.h b/src/qtui/chatmonitorview.h index 5bb0eb04..8a012413 100644 --- a/src/qtui/chatmonitorview.h +++ b/src/qtui/chatmonitorview.h @@ -32,12 +32,12 @@ public: ChatMonitorView(ChatMonitorFilter *filter, QWidget *parent); protected: - virtual void contextMenuEvent(QContextMenuEvent *event); + virtual void addActionsToMenu(QMenu *menu, const QPointF &pos); virtual void mouseDoubleClickEvent(QMouseEvent *event); private slots: void showFieldsChanged(bool checked); - + private: ChatMonitorFilter *_filter; }; diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 7d2944c6..8ccdfcaf 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -579,7 +579,8 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu menu; // zoom actions and similar - chatView()->addActionsToMenu(&menu); + chatView()->addActionsToMenu(&menu, pos); + menu.addSeparator(); if(isPosOverSelection(pos)) menu.addAction(SmallIcon("edit-copy"), tr("Copy Selection"), diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 4672911d..024e49d6 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -45,6 +45,7 @@ ChatView::ChatView(BufferId bufferId, QWidget *parent) ChatView::ChatView(MessageFilter *filter, QWidget *parent) : QGraphicsView(parent), AbstractChatView(), + _bufferContainer(0), _currentScaleFactor(1) { init(filter); @@ -150,11 +151,11 @@ MsgId ChatView::lastMsgId() const { return model->data(model->index(model->rowCount() - 1, 0), MessageModel::MsgIdRole).value(); } -void ChatView::addActionsToMenu(QMenu *menu) { +void ChatView::addActionsToMenu(QMenu *menu, const QPointF &pos) { // zoom actions BufferWidget *bw = qobject_cast(bufferContainer()); if(bw) { - bw->addActionsToMenu(menu); + bw->addActionsToMenu(menu, pos); menu->addSeparator(); } } diff --git a/src/qtui/chatview.h b/src/qtui/chatview.h index 390366a3..3d29bff5 100644 --- a/src/qtui/chatview.h +++ b/src/qtui/chatview.h @@ -47,7 +47,7 @@ public: inline ChatScene *scene() const { return _scene; } - void addActionsToMenu(QMenu *); + virtual void addActionsToMenu(QMenu *, const QPointF &pos); public slots: inline virtual void clear() {}