Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions view/kernelcache/ui/kctriage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ QWidget* KCTriageView::initImageTable()
m_imageTable->setSelectionBehavior(QAbstractItemView::SelectRows);
m_imageTable->setSelectionMode(QAbstractItemView::ExtendedSelection);

m_imageTable->sortByColumn(0, Qt::AscendingOrder);
m_imageTable->setSortingEnabled(true);

m_imageTable->verticalHeader()->setVisible(false);
Expand Down Expand Up @@ -454,4 +455,8 @@ void KCTriageView::RefreshData()
setImageLoaded(loadedImg.headerVirtualAddress);

m_symbolTable->populateSymbols(*m_data);

// Reapply the current sort after repopulating the model
// TODO: This should use `QSortFilterProxyModel`, but that's a bigger change.
m_imageTable->setSortingEnabled(true);
}
4 changes: 4 additions & 0 deletions view/kernelcache/ui/symboltable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,10 @@ void SymbolTableView::populateSymbols(BinaryView &view)
{
auto symbols = watcher->result();
m_model->updateSymbols(std::move(symbols));

// Reapply the current sort after repopulating the model
// TODO: The model should use `QSortFilterProxyModel`, but that's a bigger change.
setSortingEnabled(true);
}
});
QFuture<SymbolList> future = QtConcurrent::run([controller]() {
Expand Down
50 changes: 33 additions & 17 deletions view/sharedcache/ui/dsctriage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ QWidget* DSCTriageView::initImageTable()
m_imageTable->setSelectionBehavior(QAbstractItemView::SelectRows);
m_imageTable->setSelectionMode(QAbstractItemView::ExtendedSelection);

m_imageTable->sortByColumn(0, Qt::AscendingOrder);
m_imageTable->setSortingEnabled(true);

m_imageTable->verticalHeader()->setVisible(false);
Expand Down Expand Up @@ -421,32 +422,34 @@ void DSCTriageView::initCacheInfoTables()
m_mappingTable->setSelectionBehavior(QAbstractItemView::SelectRows);
m_mappingTable->setSelectionMode(QAbstractItemView::ExtendedSelection);

m_mappingTable->sortByColumn(0, Qt::AscendingOrder);
m_mappingTable->setSortingEnabled(true);

m_mappingTable->verticalHeader()->setVisible(false);

auto regionTable = new FilterableTableView(cacheInfoSubwidget);
m_regionModel = new QStandardItemModel(0, 4, regionTable);
m_regionTable = new FilterableTableView(cacheInfoSubwidget);
m_regionModel = new QStandardItemModel(0, 4, m_regionTable);
m_regionModel->setHorizontalHeaderLabels({"Address", "Size", "Type", "Name"});

// Apply custom column styling
regionTable->setItemDelegateForColumn(0, new AddressColorDelegate(regionTable));
m_regionTable->setItemDelegateForColumn(0, new AddressColorDelegate(m_regionTable));

regionTable->setModel(m_regionModel);
m_regionTable->setModel(m_regionModel);

regionTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
regionTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
regionTable->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
regionTable->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch);
m_regionTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
m_regionTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
m_regionTable->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
m_regionTable->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch);

regionTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_regionTable->setEditTriggers(QAbstractItemView::NoEditTriggers);

regionTable->setSelectionBehavior(QAbstractItemView::SelectRows);
regionTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_regionTable->setSelectionBehavior(QAbstractItemView::SelectRows);
m_regionTable->setSelectionMode(QAbstractItemView::ExtendedSelection);

regionTable->setSortingEnabled(true);
m_regionTable->sortByColumn(0, Qt::AscendingOrder);
m_regionTable->setSortingEnabled(true);

regionTable->verticalHeader()->setVisible(false);
m_regionTable->verticalHeader()->setVisible(false);

auto mappingLabel = new QLabel("Mappings");
auto mappingFilterEdit = new FilterEdit(m_mappingTable);
Expand All @@ -462,10 +465,10 @@ void DSCTriageView::initCacheInfoTables()
mappingHeaderLayout->setSpacing(30);

auto regionLabel = new QLabel("Regions");
auto regionFilterEdit = new FilterEdit(regionTable);
auto regionFilterEdit = new FilterEdit(m_regionTable);
regionFilterEdit->setPlaceholderText("Filter regions");
connect(regionFilterEdit, &FilterEdit::textChanged, [regionTable](const QString& filter) {
regionTable->setFilter(filter.toStdString());
connect(regionFilterEdit, &FilterEdit::textChanged, [this](const QString& filter) {
m_regionTable->setFilter(filter.toStdString());
});

auto regionHeaderLayout = new QHBoxLayout;
Expand All @@ -480,7 +483,7 @@ void DSCTriageView::initCacheInfoTables()

auto regionLayout = new QVBoxLayout;
regionLayout->addLayout(regionHeaderLayout);
regionLayout->addWidget(regionTable);
regionLayout->addWidget(m_regionTable);

cacheInfoLayout->addLayout(mappingLayout);
cacheInfoLayout->addLayout(regionLayout);
Expand Down Expand Up @@ -552,6 +555,10 @@ void DSCTriageView::RefreshData()
for (const auto& loadedImg : controller->GetLoadedImages())
setImageLoaded(loadedImg.headerAddress);

// Reapply the current sort after repopulating the model
// TODO: This should use `QSortFilterProxyModel`, but that's a bigger change.
m_imageTable->setSortingEnabled(true);

m_regionModel->setRowCount(0);
for (const auto& region : controller->GetRegions())
{
Expand All @@ -563,6 +570,10 @@ void DSCTriageView::RefreshData()
});
}

// Reapply the current sort after repopulating the model
// TODO: This should use `QSortFilterProxyModel`, but that's a bigger change.
m_regionTable->setSortingEnabled(true);

m_mappingModel->setRowCount(0);
for (const auto& entry : controller->GetEntries())
{
Expand All @@ -578,5 +589,10 @@ void DSCTriageView::RefreshData()
}
}

// Reapply the current sort after repopulating the model
// TODO: This should use `QSortFilterProxyModel`, but that's a bigger change.
m_mappingTable->setSortingEnabled(true);


m_symbolTable->populateSymbols(*m_data);
}
2 changes: 2 additions & 0 deletions view/sharedcache/ui/dsctriage.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ class DSCTriageView : public QWidget, public View, public UIContextNotification

SymbolTableView* m_symbolTable;

FilterableTableView* m_regionTable;

FilterableTableView* m_mappingTable;
QStandardItemModel* m_mappingModel;

Expand Down
5 changes: 5 additions & 0 deletions view/sharedcache/ui/symboltable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ SymbolTableView::SymbolTableView(QWidget* parent) :
setSelectionMode(QAbstractItemView::SingleSelection);
verticalHeader()->setVisible(false);

sortByColumn(0, Qt::AscendingOrder);
setSortingEnabled(true);
}

Expand All @@ -203,6 +204,10 @@ void SymbolTableView::populateSymbols(BinaryView &view)
{
auto symbols = watcher->result();
m_model->updateSymbols(std::move(symbols));

// Reapply the current sort after repopulating the model
// TODO: The model should use `QSortFilterProxyModel`, but that's a bigger change.
setSortingEnabled(true);
}
});
QFuture<SymbolList> future = QtConcurrent::run([controller]() {
Expand Down
Loading