Moar context menu actions, integrate the ChatMonitorView context menu into the global one
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 19 Nov 2008 08:00:22 +0000 (09:00 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 20 Nov 2008 14:35:37 +0000 (15:35 +0100)
src/qtui/bufferwidget.cpp
src/qtui/bufferwidget.h
src/qtui/chatmonitorview.cpp
src/qtui/chatmonitorview.h
src/qtui/chatscene.cpp
src/qtui/chatview.cpp
src/qtui/chatview.h

index 1dbe7b7..69718d5 100644 (file)
@@ -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) {
index fd8c9ac..5e1af50 100644 (file)
@@ -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);
index d5c3731..6e00778 100644 (file)
@@ -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) {
index 5bb0eb0..8a01241 100644 (file)
@@ -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;
 };
index 7d2944c..8ccdfca 100644 (file)
@@ -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"),
index 4672911..024e49d 100644 (file)
@@ -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<MsgId>();
 }
 
-void ChatView::addActionsToMenu(QMenu *menu) {
+void ChatView::addActionsToMenu(QMenu *menu, const QPointF &pos) {
   // zoom actions
   BufferWidget *bw = qobject_cast<BufferWidget *>(bufferContainer());
   if(bw) {
-    bw->addActionsToMenu(menu);
+    bw->addActionsToMenu(menu, pos);
     menu->addSeparator();
   }
 }
index 390366a..3d29bff 100644 (file)
@@ -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() {}