From ecd122f1d7e1c241ac1fb1bd05a342d2290d4825 Mon Sep 17 00:00:00 2001 From: Adrian Date: Thu, 31 Oct 2024 11:55:32 -0400 Subject: [PATCH] Rewrite function for clarity and possible performance gain --- mainwindow.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 396a6289..a62ba4f0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -832,19 +832,20 @@ void MainWindow::displayPackages() void MainWindow::displayAutoremovable(const QTreeWidget *newtree) { - if (newtree != ui->treePopularApps && newtree != ui->treeFlatpak) { - QStringList names = cmd.getOut("LANG=C apt-get --dry-run autoremove | grep -Po '^Remv \\K[^ ]+'") - .split('\n', Qt::SkipEmptyParts); - if (!names.isEmpty()) { - ui->pushRemoveAutoremovable->setVisible(true); - for (const QString &name : names) { - auto matchingItems = newtree->findItems(name, Qt::MatchExactly | Qt::MatchRecursive, TreeCol::Name); - for (QTreeWidgetItem *item : matchingItems) { - item->setData(TreeCol::Status, Qt::UserRole, Status::Autoremovable); - } - } - } else { - ui->pushRemoveAutoremovable->setVisible(false); + if (newtree == ui->treePopularApps || newtree == ui->treeFlatpak) { + return; + } + QStringList names + = cmd.getOut("LANG=C apt-get --dry-run autoremove | grep -Po '^Remv \\K[^ ]+'").split('\n', Qt::SkipEmptyParts); + + ui->pushRemoveAutoremovable->setVisible(!names.isEmpty()); + if (names.isEmpty()) { + return; + } + QSet nameSet(names.begin(), names.end()); + for (QTreeWidgetItemIterator it(const_cast(newtree)); *it; ++it) { + if (nameSet.contains((*it)->text(TreeCol::Name))) { + (*it)->setData(TreeCol::Status, Qt::UserRole, Status::Autoremovable); } } }