From 6f2b237ecf8930b7b262ed41abf9f6e197f8c11b Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 16 Aug 2023 09:03:06 +0200 Subject: [PATCH] ProjectExplorer: Change KitManager::sortKits() ... to sortedKits(). Simplifies the caller side and saves one temporary container. Change-Id: Id87a1ba0779e6f09cd6575808c4d05c126900f0f Reviewed-by: Reviewed-by: Jarek Kobus --- src/plugins/projectexplorer/kitchooser.cpp | 3 +-- src/plugins/projectexplorer/kitmanager.cpp | 9 +++++---- src/plugins/projectexplorer/kitmanager.h | 3 +-- src/plugins/projectexplorer/kitmodel.cpp | 3 +-- src/plugins/projectexplorer/targetsettingspanel.cpp | 3 +-- src/plugins/projectexplorer/targetsetuppage.cpp | 3 +-- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/plugins/projectexplorer/kitchooser.cpp b/src/plugins/projectexplorer/kitchooser.cpp index f5eff5dc88f..b4d0031cd45 100644 --- a/src/plugins/projectexplorer/kitchooser.cpp +++ b/src/plugins/projectexplorer/kitchooser.cpp @@ -102,8 +102,7 @@ void KitChooser::populate() m_hasStartupKit = true; } } - const QList kits = KitManager::sortKits(KitManager::kits()); - for (Kit *kit : kits) { + for (Kit *kit : KitManager::sortedKits()) { if (m_kitPredicate(kit)) { m_chooser->addItem(kitText(kit), kit->id().toSetting()); const int pos = m_chooser->count() - 1; diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 2c95c1edf05..7f7658cf4cc 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -461,15 +461,16 @@ void KitManager::setBinaryForKit(const FilePath &binary) d->m_binaryForKit = binary; } -QList KitManager::sortKits(const QList &kits) +const QList KitManager::sortedKits() { // This method was added to delay the sorting of kits as long as possible. // Since the displayName can contain variables it can be costly (e.g. involve // calling executables to find version information, etc.) to call that // method! // Avoid lots of potentially expensive calls to Kit::displayName(): - QList> sortList = Utils::transform(kits, [](Kit *k) { - return qMakePair(k->displayName(), k); + std::vector> sortList = + Utils::transform(d->m_kitList, [](const std::unique_ptr &k) { + return qMakePair(k->displayName(), k.get()); }); Utils::sort(sortList, [](const QPair &a, const QPair &b) -> bool { @@ -477,7 +478,7 @@ QList KitManager::sortKits(const QList &kits) return a.second < b.second; return a.first < b.first; }); - return Utils::transform(sortList, &QPair::second); + return Utils::transform(sortList, &QPair::second); } static KitList restoreKitsHelper(const FilePath &fileName) diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index 284683e7e34..f90e0a0b5c1 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -135,6 +135,7 @@ public: static KitManager *instance(); static const QList kits(); + static const QList sortedKits(); // Avoid sorting whenever possible! static Kit *kit(const Kit::Predicate &predicate); static Kit *kit(Utils::Id id); static Kit *defaultKit(); @@ -147,8 +148,6 @@ public: static void deregisterKit(Kit *k); static void setDefaultKit(Kit *k); - static QList sortKits(const QList &kits); // Avoid sorting whenever possible! - static void saveKits(); static bool isLoaded(); diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index 1011ffd100f..4981a19d25b 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -159,8 +159,7 @@ KitModel::KitModel(QBoxLayout *parentLayout, QObject *parent) rootItem()->appendChild(m_autoRoot); rootItem()->appendChild(m_manualRoot); - const QList kits = KitManager::sortKits(KitManager::kits()); - for (Kit *k : kits) + for (Kit *k : KitManager::sortedKits()) addKit(k); changeDefaultKit(); diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 313588c8006..0a95a7219b5 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -764,8 +764,7 @@ void TargetGroupItemPrivate::rebuildContents() { q->removeChildren(); - const QList kits = KitManager::sortKits(KitManager::kits()); - for (Kit *kit : kits) + for (Kit *kit : KitManager::sortedKits()) q->appendChild(new TargetItem(m_project, kit->id(), m_project->projectIssues(kit))); if (q->parent()) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 24f31fe2304..5c18b017927 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -302,8 +302,7 @@ bool TargetSetupPage::isComplete() const void TargetSetupPagePrivate::setupWidgets(const QString &filterText) { - const auto kitList = KitManager::sortKits(KitManager::kits()); - for (Kit *k : kitList) { + for (Kit *k : KitManager::sortedKits()) { if (!filterText.isEmpty() && !k->displayName().contains(filterText, Qt::CaseInsensitive)) continue; const auto widget = new TargetSetupWidget(k, m_projectPath);