aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <[email protected]>2025-03-13 14:38:44 +0100
committerhjk <[email protected]>2025-03-14 08:14:21 +0000
commita1c7fa292399e8febdcc840b4a97c0e7b8ea3370 (patch)
tree276d8b24861f5de9b0b595f231fb7d452cc64e9a
parent472660f8453c7e256180f636899e6871aaea4b48 (diff)
Utils: Proceed with FilePathification of FileSystemWatcher
Task-number: QTCREATORBUG-26870 Change-Id: Ie26a1014161aaa259942eb3287924a04396d07d7 Reviewed-by: Marcus Tillmanns <[email protected]>
-rw-r--r--src/libs/utils/filesystemwatcher.cpp23
-rw-r--r--src/libs/utils/filesystemwatcher.h5
-rw-r--r--src/plugins/nim/project/nimproject.cpp2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp14
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.cpp20
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.h8
6 files changed, 30 insertions, 42 deletions
diff --git a/src/libs/utils/filesystemwatcher.cpp b/src/libs/utils/filesystemwatcher.cpp
index 585e9d2290c..fb89522af80 100644
--- a/src/libs/utils/filesystemwatcher.cpp
+++ b/src/libs/utils/filesystemwatcher.cpp
@@ -341,7 +341,7 @@ void FileSystemWatcher::clear()
if (!d->m_files.isEmpty())
removeFiles(filePaths());
if (!d->m_directories.isEmpty())
- removeDirectories(directoryPaths());
+ removeDirectories(directories());
}
QStringList FileSystemWatcher::files() const
@@ -393,16 +393,17 @@ void FileSystemWatcher::addDirectories(const QStringList &directories, WatchMode
void FileSystemWatcher::removeDirectory(const FilePath &file)
{
- removeDirectories({file.toFSPathString()});
+ removeDirectories({file});
}
-void FileSystemWatcher::removeDirectories(const QStringList &directories)
+void FileSystemWatcher::removeDirectories(const FilePaths &directories)
{
qCDebug(fileSystemWatcherLog)
<< this << d->m_id << "removeDirectories" << directories;
QStringList toRemove;
- for (const QString &directory : directories) {
+ for (const FilePath &dir : directories) {
+ const QString directory = dir.toFSPathString();
const auto it = d->m_directories.constFind(directory);
if (it == d->m_directories.constEnd()) {
qWarning("FileSystemWatcher: Directory %s is not watched.", qPrintable(directory));
@@ -420,9 +421,9 @@ void FileSystemWatcher::removeDirectories(const QStringList &directories)
d->m_staticData->m_watcher->removePaths(toRemove);
}
-QStringList FileSystemWatcher::directories() const
+FilePaths FileSystemWatcher::directories() const
{
- return d->m_directories.keys();
+ return transform(d->m_directories.keys(), &FilePath::fromString);
}
void FileSystemWatcher::slotFileChanged(const QString &path)
@@ -524,19 +525,9 @@ void FileSystemWatcher::addDirectories(const FilePaths &files, WatchMode wm)
addDirectories(transform(files, &FilePath::toFSPathString), wm);
}
-void FileSystemWatcher::removeDirectories(const FilePaths &files)
-{
- removeDirectories(transform(files, &FilePath::toFSPathString));
-}
-
bool FileSystemWatcher::watchesDirectory(const FilePath &file) const
{
return watchesDirectory(file.toFSPathString());
}
-FilePaths FileSystemWatcher::directoryPaths() const
-{
- return transform(directories(), &FilePath::fromString);
-}
-
} //Utils
diff --git a/src/libs/utils/filesystemwatcher.h b/src/libs/utils/filesystemwatcher.h
index e3ebea39433..984797ac7ed 100644
--- a/src/libs/utils/filesystemwatcher.h
+++ b/src/libs/utils/filesystemwatcher.h
@@ -48,7 +48,7 @@ public:
bool watchesDirectory(const Utils::FilePath &file) const;
- Utils::FilePaths directoryPaths() const;
+ Utils::FilePaths directories() const;
// Phase out:
void addFile(const QString &file, WatchMode wm);
@@ -63,10 +63,7 @@ public:
void addDirectory(const QString &file, WatchMode wm);
void addDirectories(const QStringList &files, WatchMode wm);
- void removeDirectories(const QStringList &files);
-
bool watchesDirectory(const QString &file) const;
- QStringList directories() const;
signals:
void fileChanged(const Utils::FilePath &path);
diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp
index 54fc7ace2d7..f56d9e61ef1 100644
--- a/src/plugins/nim/project/nimproject.cpp
+++ b/src/plugins/nim/project/nimproject.cpp
@@ -49,7 +49,7 @@ NimProjectScanner::NimProjectScanner(Project *project)
// Sync watched dirs
const QSet<FilePath> fsDirs = Utils::transform<QSet>(nodes,
[](const std::unique_ptr<FileNode> &fn) { return fn->directory(); });
- const QSet<FilePath> projectDirs = Utils::toSet(m_directoryWatcher.directoryPaths());
+ const QSet<FilePath> projectDirs = Utils::toSet(m_directoryWatcher.directories());
m_directoryWatcher.addDirectories(Utils::toList(fsDirs - projectDirs), FileSystemWatcher::WatchAllChanges);
m_directoryWatcher.removeDirectories(Utils::toList(projectDirs - fsDirs));
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
index 15007fdbfec..2a51c5a2ab1 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
@@ -1746,7 +1746,7 @@ void QmakeProFile::applyEvaluate(const QmakeEvalResultPtr &result)
const QStringList directoriesToAdd = Utils::filtered<QStringList>(
Utils::toList(result->directoriesWithWildcards),
[this](const QString &path) {
- return !m_wildcardWatcher->watchesDirectory(path);
+ return !m_wildcardWatcher->watchesDirectory(FilePath::fromString(path));
});
for (const QString &path : directoriesToAdd)
m_wildcardDirectoryContents.insert(path, QDir(path).entryList());
@@ -1757,15 +1757,15 @@ void QmakeProFile::applyEvaluate(const QmakeEvalResultPtr &result)
m_wildcardWatcher.reset();
m_wildcardDirectoryContents.clear();
} else {
- const QStringList directoriesToRemove =
- Utils::filtered<QStringList>(
+ const FilePaths directoriesToRemove =
+ Utils::filtered<FilePaths>(
m_wildcardWatcher->directories(),
- [&result](const QString &path) {
- return !result->directoriesWithWildcards.contains(path);
+ [&result](const FilePath &path) {
+ return !result->directoriesWithWildcards.contains(path.toFSPathString());
});
m_wildcardWatcher->removeDirectories(directoriesToRemove);
- for (const QString &path : directoriesToRemove)
- m_wildcardDirectoryContents.remove(path);
+ for (const FilePath &path : directoriesToRemove)
+ m_wildcardDirectoryContents.remove(path.toFSPathString());
}
}
diff --git a/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.cpp b/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.cpp
index 4cd87b40e58..f2da43f9001 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.cpp
+++ b/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.cpp
@@ -47,9 +47,9 @@ Utils::FileSystemWatcher *FileFilterItem::dirWatcher()
return m_dirWatcher;
}
-QStringList FileFilterItem::watchedDirectories() const
+FilePaths FileFilterItem::watchedDirectories() const
{
- return m_dirWatcher ? m_dirWatcher->directories() : QStringList();
+ return m_dirWatcher ? m_dirWatcher->directories() : FilePaths();
}
QString FileFilterItem::directory() const
@@ -172,8 +172,8 @@ bool FileFilterItem::matchesFile(const QString &filePath) const
return false;
const QDir fileDir = QFileInfo(filePath).absoluteDir();
- for (const QString &watchedDirectory : watchedDirectories()) {
- if (QDir(watchedDirectory) == fileDir)
+ for (const FilePath &watchedDirectory : watchedDirectories()) {
+ if (QDir(watchedDirectory.toFSPathString()) == fileDir)
return true;
}
@@ -240,7 +240,7 @@ void FileFilterItem::updateFileListNow()
if (projectDir.isEmpty())
return;
- QSet<QString> dirsToBeWatched;
+ QSet<FilePath> dirsToBeWatched;
QSet<QString> newFiles;
for (const QString &explicitPath : std::as_const(m_explicitFiles))
newFiles << absolutePath(explicitPath);
@@ -263,9 +263,9 @@ void FileFilterItem::updateFileListNow()
}
// update watched directories
- const QSet<QString> oldDirs = Utils::toSet(watchedDirectories());
- const QSet<QString> unwatchDirs = oldDirs - dirsToBeWatched;
- const QSet<QString> watchDirs = dirsToBeWatched - oldDirs;
+ const QSet<FilePath> oldDirs = Utils::toSet(watchedDirectories());
+ const QSet<FilePath> unwatchDirs = oldDirs - dirsToBeWatched;
+ const QSet<FilePath> watchDirs = dirsToBeWatched - oldDirs;
if (!unwatchDirs.isEmpty()) {
QTC_ASSERT(m_dirWatcher, return);
@@ -298,7 +298,7 @@ bool FileFilterItem::ignoreDirectory(const QFileInfo &file) const
return blackList.contains(file.fileName());
}
-QSet<QString> FileFilterItem::filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<QString> *parsedDirs)
+QSet<QString> FileFilterItem::filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<FilePath> *parsedDirs)
{
QFileInfo dirInfo(dir.absolutePath());
if (dirInfo.isHidden())
@@ -315,7 +315,7 @@ QSet<QString> FileFilterItem::filesInSubTree(const QDir &rootDir, const QDir &di
}
if (parsedDirs)
- parsedDirs->insert(dir.absolutePath());
+ parsedDirs->insert(FilePath::fromString(dir.absolutePath()));
if (recursive()) {
for (const QFileInfo &subDir : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) {
diff --git a/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.h b/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.h
index e9cc6c25011..1707825c7cf 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.h
+++ b/src/plugins/qmlprojectmanager/buildsystem/projectitem/filefilteritems.h
@@ -3,6 +3,8 @@
#pragma once
+#include <utils/filepath.h>
+
#include <QFileInfo>
#include <QObject>
#include <QRegularExpression>
@@ -10,8 +12,6 @@
#include <QTimer>
#include <QJsonArray>
-QT_FORWARD_DECLARE_CLASS(QDir)
-
namespace Utils { class FileSystemWatcher; }
namespace QmlProjectManager {
@@ -66,9 +66,9 @@ private:
bool fileMatches(const QString &fileName) const;
bool ignoreDirectory(const QFileInfo &file) const;
- QSet<QString> filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<QString> *parsedDirs = nullptr);
+ QSet<QString> filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<Utils::FilePath> *parsedDirs = nullptr);
Utils::FileSystemWatcher *dirWatcher();
- QStringList watchedDirectories() const;
+ Utils::FilePaths watchedDirectories() const;
QString m_rootDir;
QString m_defaultDir;