Project: Avoid copying the entire files(...) list

Avoid copying the entire list of files known to a project just to
filter out a couple of files from it.

Change-Id: I58b2e323f9678058ba482353eb777a55189fe05d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Tobias Hunger
2019-06-18 16:21:56 +02:00
parent 30df84e177
commit e2d6c0bfea
6 changed files with 29 additions and 22 deletions

View File

@@ -41,8 +41,9 @@
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/idocument.h>
#include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/projecttree.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/projecttree.h>
#include <texteditor/formattexteditor.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
@@ -103,10 +104,9 @@ QString ArtisticStyle::configurationFile() const
if (m_settings.useOtherFiles()) {
if (const ProjectExplorer::Project *project
= ProjectExplorer::ProjectTree::currentProject()) {
const Utils::FilePathList files = project->files(ProjectExplorer::Project::AllFiles);
for (const Utils::FilePath &file : files) {
if (!file.endsWith(".astylerc"))
continue;
const Utils::FilePathList astyleRcfiles = project->files(
[](const ProjectExplorer::Node *n) { return n->filePath().endsWith(".astylerc"); });
for (const Utils::FilePath &file : astyleRcfiles) {
const QFileInfo fi = file.toFileInfo();
if (fi.isReadable())
return file.toString();

View File

@@ -161,7 +161,7 @@ void BeautifierPluginPrivate::autoFormatOnSave(Core::IDocument *document)
// Check if file is contained in the current project (if wished)
if (m_generalSettings->autoFormatOnlyCurrentProject()) {
const ProjectExplorer::Project *pro = ProjectExplorer::ProjectTree::currentProject();
if (!pro || !pro->files(ProjectExplorer::Project::SourceFiles).contains(document->filePath())) {
if (!pro || !pro->isKnownFile(document->filePath())) {
return;
}
}

View File

@@ -41,8 +41,9 @@
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/idocument.h>
#include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/projecttree.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/projecttree.h>
#include <texteditor/formattexteditor.h>
#include <texteditor/texteditor.h>
#include <utils/fileutils.h>
@@ -144,10 +145,9 @@ QString Uncrustify::configurationFile() const
if (m_settings.useOtherFiles()) {
if (const ProjectExplorer::Project *project
= ProjectExplorer::ProjectTree::currentProject()) {
const Utils::FilePathList files = project->files(ProjectExplorer::Project::AllFiles);
const Utils::FilePathList files = project->files(
[](const ProjectExplorer::Node *n) { return n->filePath().endsWith("cfg"); });
for (const Utils::FilePath &file : files) {
if (!file.endsWith("cfg"))
continue;
const QFileInfo fi = file.toFileInfo();
if (fi.isReadable() && fi.fileName() == "uncrustify.cfg")
return file.toString();

View File

@@ -634,9 +634,12 @@ QStringList CMakeProject::filesGeneratedFrom(const QString &sourceFile) const
ProjectExplorer::DeploymentKnowledge CMakeProject::deploymentKnowledge() const
{
return contains(files(AllFiles), [](const FilePath &f) {
return f.fileName() == "QtCreatorDeployment.txt";
}) ? DeploymentKnowledge::Approximative : DeploymentKnowledge::Bad;
return !files([](const ProjectExplorer::Node *n) {
return n->filePath().fileName() == "QtCreatorDeployment.txt";
})
.isEmpty()
? DeploymentKnowledge::Approximative
: DeploymentKnowledge::Bad;
}
MakeInstallCommand CMakeProject::makeInstallCommand(const Target *target,

View File

@@ -26,14 +26,15 @@
#include "resourcepreviewhoverhandler.h"
#include <coreplugin/icore.h>
#include <utils/tooltip/tooltip.h>
#include <utils/fileutils.h>
#include <utils/qtcassert.h>
#include <utils/mimetypes/mimedatabase.h>
#include <projectexplorer/projecttree.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/projecttree.h>
#include <texteditor/texteditor.h>
#include <utils/executeondestruction.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/tooltip/tooltip.h>
#include <QPoint>
#include <QTextBlock>
@@ -143,10 +144,9 @@ static QString findResourceInProject(const QString &resName)
return QString();
if (auto *project = ProjectExplorer::ProjectTree::currentProject()) {
const Utils::FilePathList files = project->files(ProjectExplorer::Project::AllFiles);
const Utils::FilePathList files = project->files(
[](const ProjectExplorer::Node *n) { return n->filePath().endsWith(".qrc"); });
for (const Utils::FilePath &file : files) {
if (!file.endsWith(".qrc"))
continue;
const QFileInfo fi = file.toFileInfo();
if (!fi.isReadable())
continue;

View File

@@ -764,7 +764,11 @@ static void notifyChangedHelper(const FilePath &fileName, QmakeProFile *file)
void QmakeProject::notifyChanged(const FilePath &name)
{
for (QmakeProject *project : s_projects) {
if (project->files(QmakeProject::SourceFiles).contains(name))
if (!project
->files([&name](const ProjectExplorer::Node *n) {
return Project::SourceFiles(n) && n->filePath() == name;
})
.isEmpty())
notifyChangedHelper(name, project->rootProFile());
}
}