aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager/fileapireader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cmakeprojectmanager/fileapireader.h')
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.h50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h
index 560aafc779..0b578511ec 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.h
+++ b/src/plugins/cmakeprojectmanager/fileapireader.h
@@ -25,16 +25,18 @@
#pragma once
-#include "builddirreader.h"
-#include "fileapiparser.h"
-
+#include "cmakebuildtarget.h"
#include "cmakeprocess.h"
+#include "cmakeprojectnodes.h"
-#include <utils/optional.h>
+#include <projectexplorer/rawprojectpart.h>
-#include <memory>
+#include <utils/filesystemwatcher.h>
+#include <utils/optional.h>
#include <QFuture>
+#include <QObject>
+#include <QDateTime>
namespace ProjectExplorer {
class ProjectNode;
@@ -45,29 +47,34 @@ namespace Internal {
class FileApiQtcData;
-class FileApiReader final : public BuildDirReader
+class FileApiReader final : public QObject
{
Q_OBJECT
public:
FileApiReader();
- ~FileApiReader() final;
+ ~FileApiReader();
- void setParameters(const BuildDirParameters &p) final;
+ void setParameters(const BuildDirParameters &p);
- bool isCompatible(const BuildDirParameters &p) final;
- void resetData() final;
- void parse(bool forceCMakeRun, bool forceConfiguration) final;
- void stop() final;
+ void resetData();
+ void parse(bool forceCMakeRun, bool forceInitialConfiguration, bool forceExtraConfiguration);
+ void stop();
- bool isParsing() const final;
+ bool isParsing() const;
- QSet<Utils::FilePath> projectFilesToWatch() const final;
- QList<CMakeBuildTarget> takeBuildTargets(QString &errorMessage) final;
- CMakeConfig takeParsedConfiguration(QString &errorMessage) final;
+ QSet<Utils::FilePath> projectFilesToWatch() const;
+ QList<CMakeBuildTarget> takeBuildTargets(QString &errorMessage);
+ CMakeConfig takeParsedConfiguration(QString &errorMessage);
std::unique_ptr<CMakeProjectNode> generateProjectTree(
- const QList<const ProjectExplorer::FileNode *> &allFiles, QString &errorMessage) final;
- ProjectExplorer::RawProjectParts createRawProjectParts(QString &errorMessage) final;
+ const QList<const ProjectExplorer::FileNode *> &allFiles, QString &errorMessage);
+ ProjectExplorer::RawProjectParts createRawProjectParts(QString &errorMessage);
+
+signals:
+ void configurationStarted() const;
+ void dataAvailable() const;
+ void dirty() const;
+ void errorOccurred(const QString &message) const;
private:
void startState();
@@ -75,6 +82,8 @@ private:
void startCMakeState(const QStringList &configurationArguments);
void cmakeFinishedState(int code, QProcess::ExitStatus status);
+ void replyDirectoryHasChanged(const QString &directory) const;
+
std::unique_ptr<CMakeProcess> m_cmakeProcess;
// cmake data:
@@ -89,8 +98,11 @@ private:
// Update related:
bool m_isParsing = false;
+ BuildDirParameters m_parameters;
- std::unique_ptr<FileApiParser> m_fileApi;
+ // Notification on changes outside of creator:
+ Utils::FileSystemWatcher m_watcher;
+ QDateTime m_lastReplyTimestamp;
};
} // namespace Internal