diff options
author | hjk <[email protected]> | 2025-03-13 14:38:44 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2025-03-14 08:14:21 +0000 |
commit | a1c7fa292399e8febdcc840b4a97c0e7b8ea3370 (patch) | |
tree | 276d8b24861f5de9b0b595f231fb7d452cc64e9a | |
parent | 472660f8453c7e256180f636899e6871aaea4b48 (diff) |
Utils: Proceed with FilePathification of FileSystemWatcher
Task-number: QTCREATORBUG-26870
Change-Id: Ie26a1014161aaa259942eb3287924a04396d07d7
Reviewed-by: Marcus Tillmanns <[email protected]>
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; |