Files
avivpn/mainwindow.cpp

47 lines
1.3 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenu>
#include <QDialog>
#include <QVBoxLayout>
#include <QPlainTextEdit>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow{parent},
m_ui{std::make_unique<Ui::MainWindow>()}
{
m_ui->setupUi(this);
m_ui->treeView->setModel(&m_model);
connect(m_ui->treeView, &QWidget::customContextMenuRequested, [&view=*m_ui->treeView,&model=m_model](const QPoint &pos){
const auto index = view.indexAt(pos);
if (!index.isValid())
return;
const auto &entry = model.getEntry(index);
QMenu menu;
const auto showLogAction = menu.addAction("Show log");
const auto selectedAction = menu.exec(view.viewport()->mapToGlobal(pos));
if (selectedAction == showLogAction)
{
QDialog dialog;
QVBoxLayout layout;
QPlainTextEdit widget;
QFont font = widget.document()->defaultFont();
font.setFamily("Courier New");
widget.document()->setDefaultFont(font);
widget.setLineWrapMode(QPlainTextEdit::NoWrap);
widget.setReadOnly(true);
widget.setPlainText(entry.logOutput());
layout.addWidget(&widget);
dialog.setLayout(&layout);
dialog.exec();
}
});
}
MainWindow::~MainWindow() = default;