diff options
Diffstat (limited to 'src/plugins/cmakeprojectmanager/fileapireader.h')
-rw-r--r-- | src/plugins/cmakeprojectmanager/fileapireader.h | 50 |
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 |