summaryrefslogtreecommitdiff
path: root/examples/triage/view.cpp
diff options
context:
space:
mode:
authorJordan Wiens <github@psifertex.com>2025-12-19 14:18:19 -0500
committerJordan Wiens <github@psifertex.com>2025-12-19 15:20:22 -0500
commitdbdf3381e2dd32527cffaca6081fc5a9913f1cc7 (patch)
tree4f10dc3101700a63f7e83a087e69b5b1659fb61a /examples/triage/view.cpp
parent1cabd2def9da8ee106be26308b96a2a91cd92a2f (diff)
triage view responsive layout
Diffstat (limited to 'examples/triage/view.cpp')
-rw-r--r--examples/triage/view.cpp43
1 files changed, 37 insertions, 6 deletions
diff --git a/examples/triage/view.cpp b/examples/triage/view.cpp
index 8981a99b..1da79c1d 100644
--- a/examples/triage/view.cpp
+++ b/examples/triage/view.cpp
@@ -47,8 +47,8 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent
{
QGroupBox* headerGroup = new QGroupBox("Headers", container);
QVBoxLayout* headerLayout = new QVBoxLayout();
- HeaderWidget* headerWidget = new HeaderWidget(headerGroup, *hdr);
- headerLayout->addWidget(headerWidget);
+ m_headerWidget = new HeaderWidget(headerGroup, *hdr);
+ headerLayout->addWidget(m_headerWidget);
headerGroup->setLayout(headerLayout);
layout->addWidget(headerGroup);
delete hdr;
@@ -72,13 +72,13 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent
if (m_data->IsExecutable())
{
- QSplitter* importExportSplitter = new QSplitter(Qt::Horizontal);
+ m_importExportSplitter = new QSplitter(Qt::Horizontal);
QGroupBox* importGroup = new QGroupBox("Imports", container);
QVBoxLayout* importLayout = new QVBoxLayout();
importLayout->addWidget(new ImportsWidget(importGroup, this, m_data));
importGroup->setLayout(importLayout);
- importExportSplitter->addWidget(importGroup);
+ m_importExportSplitter->addWidget(importGroup);
QSplitter* exportEntrySplitter = new QSplitter(Qt::Vertical);
@@ -94,8 +94,8 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent
entryGroup->setLayout(entryLayout);
exportEntrySplitter->addWidget(entryGroup);
- importExportSplitter->addWidget(exportEntrySplitter);
- layout->addWidget(importExportSplitter);
+ m_importExportSplitter->addWidget(exportEntrySplitter);
+ layout->addWidget(m_importExportSplitter);
if (m_data->GetTypeName() != "PE")
{
@@ -290,6 +290,37 @@ void TriageView::focusInEvent(QFocusEvent*)
}
+void TriageView::resizeEvent(QResizeEvent* event)
+{
+ QScrollArea::resizeEvent(event);
+ updateImportExportLayout();
+}
+
+
+void TriageView::updateImportExportLayout()
+{
+ if (!m_importExportSplitter)
+ return;
+
+ int width = viewport()->width();
+ Qt::Orientation currentOrientation = m_importExportSplitter->orientation();
+ Qt::Orientation desiredOrientation;
+
+ // Add hysteresis: use different thresholds for shrinking vs growing
+ if (currentOrientation == Qt::Horizontal)
+ {
+ desiredOrientation = (width < TriageBreakpoints::NARROW - 20) ? Qt::Vertical : Qt::Horizontal;
+ }
+ else
+ {
+ desiredOrientation = (width >= TriageBreakpoints::NARROW + 20) ? Qt::Horizontal : Qt::Vertical;
+ }
+
+ if (currentOrientation != desiredOrientation)
+ m_importExportSplitter->setOrientation(desiredOrientation);
+}
+
+
TriageViewType::TriageViewType() : ViewType("Triage", "Triage Summary") {}