From 859f146760527956705279baa3cdf5b0620b9f1e Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Wed, 27 Jul 2022 11:48:44 +0200 Subject: [PATCH] WelcomePage: Only retrieve recent projects once The recentProject list was retrieved for every ::data and ::rowCount call. This triggered QFileInfo.exists call for each project which was expensive. This fixes that so that the recent projects are only filtered once for each model reset. Change-Id: I6ce33a13c2446bece5b7dac1563ffa7bdc85bbaa Reviewed-by: hjk --- src/plugins/projectexplorer/projectwelcomepage.cpp | 8 ++++---- src/plugins/projectexplorer/projectwelcomepage.h | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index 2e1dd3c1527..1c882eec664 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -78,15 +78,14 @@ ProjectModel::ProjectModel(QObject *parent) int ProjectModel::rowCount(const QModelIndex &) const { - return ProjectExplorerPlugin::recentProjects().count(); + return m_projects.count(); } QVariant ProjectModel::data(const QModelIndex &index, int role) const { - const RecentProjectsEntries recentProjects = ProjectExplorerPlugin::recentProjects(); - if (recentProjects.count() <= index.row()) + if (m_projects.count() <= index.row()) return {}; - RecentProjectsEntry data = recentProjects.at(index.row()); + RecentProjectsEntry data = m_projects.at(index.row()); switch (role) { case Qt::DisplayRole: return data.second; @@ -120,6 +119,7 @@ QHash ProjectModel::roleNames() const void ProjectModel::resetProjects() { beginResetModel(); + m_projects = ProjectExplorerPlugin::recentProjects(); endResetModel(); } diff --git a/src/plugins/projectexplorer/projectwelcomepage.h b/src/plugins/projectexplorer/projectwelcomepage.h index f56b220529d..dca26f3e6b3 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.h +++ b/src/plugins/projectexplorer/projectwelcomepage.h @@ -25,6 +25,8 @@ #pragma once +#include "projectexplorer.h" + #include #include @@ -49,6 +51,9 @@ public: public slots: void resetProjects(); + +private: + RecentProjectsEntries m_projects; }; class ProjectWelcomePage : public Core::IWelcomePage