ProjectExplorer: Change KitManager::sortKits()

... to sortedKits(). Simplifies the caller side and saves one temporary
container.

Change-Id: Id87a1ba0779e6f09cd6575808c4d05c126900f0f
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2023-08-16 09:03:06 +02:00
parent c40a802e70
commit 6f2b237ecf
6 changed files with 10 additions and 14 deletions

View File

@@ -102,8 +102,7 @@ void KitChooser::populate()
m_hasStartupKit = true;
}
}
const QList<Kit *> 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;

View File

@@ -461,15 +461,16 @@ void KitManager::setBinaryForKit(const FilePath &binary)
d->m_binaryForKit = binary;
}
QList<Kit *> KitManager::sortKits(const QList<Kit *> &kits)
const QList<Kit *> 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<QPair<QString, Kit *>> sortList = Utils::transform(kits, [](Kit *k) {
return qMakePair(k->displayName(), k);
std::vector<QPair<QString, Kit *>> sortList =
Utils::transform(d->m_kitList, [](const std::unique_ptr<Kit> &k) {
return qMakePair(k->displayName(), k.get());
});
Utils::sort(sortList,
[](const QPair<QString, Kit *> &a, const QPair<QString, Kit *> &b) -> bool {
@@ -477,7 +478,7 @@ QList<Kit *> KitManager::sortKits(const QList<Kit *> &kits)
return a.second < b.second;
return a.first < b.first;
});
return Utils::transform(sortList, &QPair<QString, Kit *>::second);
return Utils::transform<QList>(sortList, &QPair<QString, Kit *>::second);
}
static KitList restoreKitsHelper(const FilePath &fileName)

View File

@@ -135,6 +135,7 @@ public:
static KitManager *instance();
static const QList<Kit *> kits();
static const QList<Kit *> 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<Kit *> sortKits(const QList<Kit *> &kits); // Avoid sorting whenever possible!
static void saveKits();
static bool isLoaded();

View File

@@ -159,8 +159,7 @@ KitModel::KitModel(QBoxLayout *parentLayout, QObject *parent)
rootItem()->appendChild(m_autoRoot);
rootItem()->appendChild(m_manualRoot);
const QList<Kit *> kits = KitManager::sortKits(KitManager::kits());
for (Kit *k : kits)
for (Kit *k : KitManager::sortedKits())
addKit(k);
changeDefaultKit();

View File

@@ -764,8 +764,7 @@ void TargetGroupItemPrivate::rebuildContents()
{
q->removeChildren();
const QList<Kit *> 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())

View File

@@ -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);