QmlProjectManager: A bit of polish

Use QVector over QList, add some qAsConst, use ranged based for,
use algorithmns, do not repeatedly search an unsorted QStringList.

Change-Id: I1a97338f0cb0d26d2cc1c4b2802bbb1540b932bb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2019-08-27 11:50:39 +02:00
parent a699a0c92e
commit 81c71fb261
2 changed files with 14 additions and 15 deletions

View File

@@ -26,6 +26,8 @@
#include "qmlprojectitem.h"
#include "filefilteritems.h"
#include <utils/algorithm.h>
#include <QDir>
namespace QmlProjectManager {
@@ -68,17 +70,17 @@ void QmlProjectItem::setFileSelectors(const QStringList &selectors)
/* Returns list of absolute paths */
QStringList QmlProjectItem::files() const
{
QStringList files;
QSet<QString> files;
for (QmlProjectContentItem *contentElement : m_content) {
if (auto fileFilter = qobject_cast<FileFilterBaseItem *>(contentElement)) {
foreach (const QString &file, fileFilter->files()) {
if (!files.contains(file))
files << file;
for (const auto contentElement : qAsConst(m_content)) {
if (auto fileFilter = qobject_cast<const FileFilterBaseItem *>(contentElement)) {
const QStringList fileList = fileFilter->files();
for (const QString &file : fileList) {
files.insert(file);
}
}
}
return files;
return files.toList();
}
/**
@@ -89,13 +91,10 @@ QStringList QmlProjectItem::files() const
*/
bool QmlProjectItem::matchesFile(const QString &filePath) const
{
for (QmlProjectContentItem *contentElement : m_content) {
if (auto fileFilter = qobject_cast<FileFilterBaseItem *>(contentElement)) {
if (fileFilter->matchesFile(filePath))
return true;
}
}
return false;
return Utils::contains(m_content, [&filePath](const QmlProjectContentItem *item) {
auto fileFilter = qobject_cast<const FileFilterBaseItem *>(item);
return fileFilter && fileFilter->matchesFile(filePath);
});
}
Utils::EnvironmentItems QmlProjectItem::environment() const

View File

@@ -78,7 +78,7 @@ protected:
QStringList m_fileSelectors;
QString m_mainFile;
Utils::EnvironmentItems m_environment;
QList<QmlProjectContentItem *> m_content; // content property
QVector<QmlProjectContentItem *> m_content; // content property
};
} // namespace QmlProjectManager