forked from qt-creator/qt-creator
Nim: Simplified project scan by removing QFutureInterface
Change-Id: I60a0d3354083215661def0acd4c26c1ece00dea7 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -65,7 +65,6 @@ NimProject::NimProject(NimProjectManager *projectManager, const QString &fileNam
|
|||||||
m_projectScanTimer.setSingleShot(true);
|
m_projectScanTimer.setSingleShot(true);
|
||||||
connect(&m_projectScanTimer, &QTimer::timeout, this, &NimProject::collectProjectFiles);
|
connect(&m_projectScanTimer, &QTimer::timeout, this, &NimProject::collectProjectFiles);
|
||||||
|
|
||||||
m_futureWatcher.setFuture(m_futureInterface.future());
|
|
||||||
connect(&m_futureWatcher, &QFutureWatcher<QList<FileNode *>>::finished, this, &NimProject::updateProject);
|
connect(&m_futureWatcher, &QFutureWatcher<QList<FileNode *>>::finished, this, &NimProject::updateProject);
|
||||||
|
|
||||||
collectProjectFiles();
|
collectProjectFiles();
|
||||||
@@ -102,19 +101,13 @@ void NimProject::scheduleProjectScan()
|
|||||||
void NimProject::collectProjectFiles()
|
void NimProject::collectProjectFiles()
|
||||||
{
|
{
|
||||||
m_lastProjectScan.start();
|
m_lastProjectScan.start();
|
||||||
QTC_ASSERT(!m_futureInterface.isRunning(), return);
|
QTC_ASSERT(!m_futureWatcher.future().isRunning(), return);
|
||||||
|
FileName prjDir = projectDirectory();
|
||||||
runAsync([this]() {
|
QFuture<QList<ProjectExplorer::FileNode *>> future = Utils::runAsync([prjDir] {
|
||||||
m_futureInterface.reportStarted();
|
return FileNode::scanForFiles(prjDir, [](const FileName &fn) { return new FileNode(fn, FileType::Source, false); });
|
||||||
QList<FileNode *> nodes
|
|
||||||
= FileNode::scanForFiles(projectDirectory(),
|
|
||||||
[](const FileName &fn) { return new FileNode(fn, FileType::Source, false); },
|
|
||||||
&m_futureInterface);
|
|
||||||
m_futureInterface.setProgressValue(m_futureInterface.progressMaximum());
|
|
||||||
m_futureInterface.reportResult(nodes);
|
|
||||||
m_futureInterface.reportFinished();
|
|
||||||
});
|
});
|
||||||
Core::ProgressManager::addTask(m_futureInterface.future(), tr("Scanning for Nim files"), "Nim.Project.Scan");
|
m_futureWatcher.setFuture(future);
|
||||||
|
Core::ProgressManager::addTask(future, tr("Scanning for Nim files"), "Nim.Project.Scan");
|
||||||
}
|
}
|
||||||
|
|
||||||
void NimProject::updateProject()
|
void NimProject::updateProject()
|
||||||
@@ -122,7 +115,7 @@ void NimProject::updateProject()
|
|||||||
QStringList oldFiles = m_files;
|
QStringList oldFiles = m_files;
|
||||||
m_files.clear();
|
m_files.clear();
|
||||||
|
|
||||||
QList<FileNode *> fileNodes = Utils::filtered(m_futureInterface.future().result(),
|
QList<FileNode *> fileNodes = Utils::filtered(m_futureWatcher.future().result(),
|
||||||
[](const FileNode *fn) {
|
[](const FileNode *fn) {
|
||||||
const QString fileName = fn->filePath().fileName();
|
const QString fileName = fn->filePath().fileName();
|
||||||
return !fileName.endsWith(".nimproject", HostOsInfo::fileNameCaseSensitivity())
|
return !fileName.endsWith(".nimproject", HostOsInfo::fileNameCaseSensitivity())
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ private:
|
|||||||
void updateProject();
|
void updateProject();
|
||||||
|
|
||||||
QStringList m_files;
|
QStringList m_files;
|
||||||
QFutureInterface<QList<ProjectExplorer::FileNode *>> m_futureInterface;
|
|
||||||
QFutureWatcher<QList<ProjectExplorer::FileNode *>> m_futureWatcher;
|
QFutureWatcher<QList<ProjectExplorer::FileNode *>> m_futureWatcher;
|
||||||
|
|
||||||
QElapsedTimer m_lastProjectScan;
|
QElapsedTimer m_lastProjectScan;
|
||||||
|
|||||||
Reference in New Issue
Block a user