Skip to content

Commit

Permalink
Add tabs to show LoadOption brief info and DP info
Browse files Browse the repository at this point in the history
  • Loading branch information
Inokinoki committed Apr 10, 2022
1 parent 51afa0d commit 3a077f1
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 11 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ set(PROJECT_SOURCES
mainwindow.h
qefientrydetailview.cpp
qefientrydetailview.h
qefientrydpdetailview.cpp
qefientrydpdetailview.h
qefientryview.cpp
qefientryview.h
qefientry.cpp
Expand Down
46 changes: 37 additions & 9 deletions qefientrydetailview.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
#include "qefientrydetailview.h"
#include "helpers.h"

QEFIEntryDetailView::QEFIEntryDetailView(QEFIEntry &entry, QWidget *parent)
QEFIEntryDetailBriefView::QEFIEntryDetailBriefView(
QEFIEntry &entry, QWidget *parent)
: QWidget(parent), m_entry(entry)
{
m_topLevelLayout = new QBoxLayout(QBoxLayout::LeftToRight, this);
m_briefLayout = new QFormLayout(this);
m_topLevelLayout->addLayout(m_briefLayout, 1);

m_briefLayout->addRow("ID:",
new QLabel(QString::asprintf("Boot%04X ", entry.id())));
Expand All @@ -17,7 +16,7 @@ QEFIEntryDetailView::QEFIEntryDetailView(QEFIEntry &entry, QWidget *parent)
auto dpList = loadOption->devicePathList();
m_briefLayout->addRow("Device Path instance:",
new QLabel(QString::number(dpList.size())));
// TODO: Add a tab to display each DP
// Add a tab to display each DP
for (int i = 0; i < dpList.size(); i++) {
// Display type name
m_briefLayout->addRow(QString::asprintf("Device Path %d type:", i + 1),
Expand All @@ -32,11 +31,40 @@ QEFIEntryDetailView::QEFIEntryDetailView(QEFIEntry &entry, QWidget *parent)
}
}

QEFIEntryDetailView::~QEFIEntryDetailView()
QEFIEntryDetailBriefView::~QEFIEntryDetailBriefView()
{
// TODO: Use smart ptr
if (m_topLevelLayout != nullptr) {
delete m_topLevelLayout;
m_topLevelLayout = nullptr;
if (m_briefLayout != nullptr) delete m_briefLayout;
m_briefLayout = nullptr;
}


QEFIEntryDetailView::QEFIEntryDetailView(QEFIEntry &entry, QWidget *parent)
: QWidget(parent), m_entry(entry)
{
m_topLevelLayout = new QBoxLayout(QBoxLayout::LeftToRight, this);
m_tab = new QTabWidget(this);
m_tab->addTab(new QEFIEntryDetailBriefView(entry, m_tab),
QStringLiteral("Brief"));

QEFILoadOption *loadOption = entry.loadOption();
if (loadOption) {
auto dpList = loadOption->devicePathList();
// Add a tab to display each DP
for (int i = 0; i < dpList.size(); i++) {
m_tab->addTab(new QEFIEntryDPDetailView(dpList[i].get(), m_tab),
QString::asprintf("DP %d", i + 1));
}
}
m_topLevelLayout->addWidget(m_tab);
setLayout(m_topLevelLayout);
}

QEFIEntryDetailView::~QEFIEntryDetailView()
{
if (m_topLevelLayout != nullptr) delete m_topLevelLayout;
m_topLevelLayout = nullptr;

// Has ownership been passed to layout?
if (m_tab != nullptr) delete m_tab;
m_tab = nullptr;
}
19 changes: 17 additions & 2 deletions qefientrydetailview.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,35 @@

#include <QWidget>

#include <QBoxLayout>
#include <QTabWidget>
#include <QFormLayout>
#include <QLabel>

#include "qefientry.h"

#include "qefientrydpdetailview.h"

class QEFIEntryDetailBriefView: public QWidget
{
Q_OBJECT

QEFIEntry &m_entry;

QFormLayout *m_briefLayout;
public:
QEFIEntryDetailBriefView(QEFIEntry &entry, QWidget *parent = nullptr);
~QEFIEntryDetailBriefView();
};

class QEFIEntryDetailView: public QWidget
{
Q_OBJECT

QEFIEntry &m_entry;

QTabWidget *m_tab;

QBoxLayout *m_topLevelLayout;
QFormLayout *m_briefLayout;
public:
QEFIEntryDetailView(QEFIEntry &entry, QWidget *parent = nullptr);
~QEFIEntryDetailView();
Expand Down
29 changes: 29 additions & 0 deletions qefientrydpdetailview.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "qefientrydpdetailview.h"
#include "helpers.h"


QEFIEntryDPDetailView::QEFIEntryDPDetailView(QEFIDevicePath *dp, QWidget *parent)
: QWidget(parent)
{
m_topLevelLayout = new QFormLayout(this);

m_topLevelLayout->addRow("Device Path type:", new QLabel(
convert_device_path_type_to_name(dp->type()) + " " +
convert_device_path_subtype_to_name(dp->type(), dp->subType()))
);
m_topLevelLayout->addRow(QStringLiteral(""),
new QLabel(QString::asprintf("%02X %02X",
dp->type(), dp->subType()))
);
// TODO: Parse device path and add more properties
setLayout(m_topLevelLayout);
}

QEFIEntryDPDetailView::~QEFIEntryDPDetailView()
{
// TODO: Use smart ptr
if (m_topLevelLayout != nullptr) {
delete m_topLevelLayout;
m_topLevelLayout = nullptr;
}
}
21 changes: 21 additions & 0 deletions qefientrydpdetailview.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#ifndef QEFIENTRYDPDETAILVIEW_H
#define QEFIENTRYDPDETAILVIEW_H

#include <QWidget>

#include <QFormLayout>
#include <QLabel>

#include <qefi.h>

class QEFIEntryDPDetailView: public QWidget
{
Q_OBJECT

QFormLayout *m_topLevelLayout;
public:
QEFIEntryDPDetailView(QEFIDevicePath *dp, QWidget *parent = nullptr);
~QEFIEntryDPDetailView();
};

#endif // QEFIENTRYDPDETAILVIEW_H

0 comments on commit 3a077f1

Please sign in to comment.