Add right-click context menu to event browser with expand/collapse all

This commit is contained in:
baldurk
2017-04-27 19:11:15 +01:00
parent c2690b8211
commit 4199a857f5
4 changed files with 69 additions and 0 deletions
+38
View File
@@ -24,6 +24,7 @@
#include "EventBrowser.h"
#include <QKeyEvent>
#include <QMenu>
#include <QShortcut>
#include <QTimer>
#include "3rdparty/flowlayout/FlowLayout.h"
@@ -123,6 +124,10 @@ EventBrowser::EventBrowser(ICaptureContext &ctx, QWidget *parent)
QObject::connect(sc, &QShortcut::activated, this, &EventBrowser::on_stepNext_clicked);
}
ui->events->setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(ui->events, &RDTreeWidget::customContextMenuRequested, this,
&EventBrowser::events_contextMenu);
OnLogfileClosed();
}
@@ -642,6 +647,39 @@ void EventBrowser::events_keyPress(QKeyEvent *event)
}
}
void EventBrowser::events_contextMenu(const QPoint &pos)
{
if(!m_Ctx.LogLoaded())
return;
RDTreeWidgetItem *item = ui->events->itemAt(pos);
if(item)
{
QMenu contextMenu(this);
QAction expandAll(tr("Expand All"), this);
QAction collapseAll(tr("Collapse All"), this);
contextMenu.addAction(&expandAll);
contextMenu.addAction(&collapseAll);
expandAll.setIcon(Icons::fit_window());
collapseAll.setIcon(Icons::arrow_in());
expandAll.setEnabled(item->childCount() > 0);
collapseAll.setEnabled(item->childCount() > 0);
QObject::connect(&expandAll, &QAction::triggered,
[this, item]() { ui->events->expandAllItems(item); });
QObject::connect(&collapseAll, &QAction::triggered,
[this, item]() { ui->events->collapseAllItems(item); });
RDDialog::show(&contextMenu, ui->events->viewport()->mapToGlobal(pos));
}
}
void EventBrowser::clearBookmarks()
{
for(QToolButton *b : m_BookmarkButtons)