diff options
Diffstat (limited to 'src/plugins/qmakeprojectmanager/qmakeproject.h')
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.h | 128 |
1 files changed, 75 insertions, 53 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 3c1b4f1ba6f..8c138e54994 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -59,15 +59,75 @@ public: explicit QmakeProject(const Utils::FilePath &proFile); ~QmakeProject() final; - QmakeProFile *rootProFile() const; - ProjectExplorer::Tasks projectIssues(const ProjectExplorer::Kit *k) const final; - QmakeProFileNode *rootProjectNode() const final; + void configureAsExampleProject() final; + + ProjectExplorer::ProjectImporter *projectImporter() const final; + +protected: + RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) final; + +private: + ProjectExplorer::DeploymentKnowledge deploymentKnowledge() const override; + + mutable ProjectExplorer::ProjectImporter *m_projectImporter = nullptr; +}; + +// FIXME: This export here is only there to appease the current version +// of the appman plugin. This _will_ go away, one way or the other. +class QMAKEPROJECTMANAGER_EXPORT QmakeBuildSystem : public ProjectExplorer::BuildSystem +{ + Q_OBJECT + +public: + explicit QmakeBuildSystem(QmakeBuildConfiguration *bc); + ~QmakeBuildSystem(); + + bool supportsAction(ProjectExplorer::Node *context, + ProjectExplorer::ProjectAction action, + const ProjectExplorer::Node *node) const override; + + bool addFiles(ProjectExplorer::Node *context, + const QStringList &filePaths, + QStringList *notAdded = nullptr) override; + ProjectExplorer::RemovedFilesFromProject removeFiles(ProjectExplorer::Node *context, + const QStringList &filePaths, + QStringList *notRemoved = nullptr) override; + bool deleteFiles(ProjectExplorer::Node *context, + const QStringList &filePaths) override; + bool canRenameFile(ProjectExplorer::Node *context, + const QString &filePath, const QString &newFilePath) override; + bool renameFile(ProjectExplorer::Node *context, + const QString &filePath, const QString &newFilePath) override; + bool addDependencies(ProjectExplorer::Node *context, + const QStringList &dependencies) override; + void triggerParsing() final; QStringList filesGeneratedFrom(const QString &file) const final; + QVariant additionalData(Core::Id id) const final; + + void asyncUpdate(); + void buildFinished(bool success); + void activeTargetWasChanged(ProjectExplorer::Target *); + + QString executableFor(const QmakeProFile *file); + + void updateCppCodeModel(); + void updateQmlJSCodeModel(); + + static bool equalFileList(const QStringList &a, const QStringList &b); + + void updateBuildSystemData(); + void collectData(const QmakeProFile *file, ProjectExplorer::DeploymentData &deploymentData); + void collectApplicationData(const QmakeProFile *file, + ProjectExplorer::DeploymentData &deploymentData); + void collectLibraryData(const QmakeProFile *file, + ProjectExplorer::DeploymentData &deploymentData); + void startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay); - static void notifyChanged(const Utils::FilePath &name); + void warnOnToolChainMismatch(const QmakeProFile *pro) const; + void testToolChain(ProjectExplorer::ToolChain *tc, const Utils::FilePath &path) const; /// \internal QtSupport::ProFileReader *createProFileReader(const QmakeProFile *qmakeProFile); @@ -81,8 +141,8 @@ public: void destroyProFileReader(QtSupport::ProFileReader *reader); /// \internal - void scheduleAsyncUpdate(QmakeProFile *file, - QmakeProFile::AsyncUpdateDelay delay = QmakeProFile::ParseLater); + void scheduleAsyncUpdateFile(QmakeProFile *file, + QmakeProFile::AsyncUpdateDelay delay = QmakeProFile::ParseLater); /// \internal void incrementPendingEvaluateFutures(); /// \internal @@ -95,56 +155,19 @@ public: void watchFolders(const QStringList &l, QmakePriFile *file); void unwatchFolders(const QStringList &l, QmakePriFile *file); - void configureAsExampleProject() final; - - void emitBuildDirectoryInitialized(); static void proFileParseError(const QString &errorMessage); - ProjectExplorer::ProjectImporter *projectImporter() const final; - enum AsyncUpdateState { Base, AsyncFullUpdatePending, AsyncPartialUpdatePending, AsyncUpdateInProgress, ShuttingDown }; AsyncUpdateState asyncUpdateState() const; - QString mapProFilePathToTarget(const Utils::FilePath &proFilePath); - - QVariant additionalData(Core::Id id, const ProjectExplorer::Target *target) const final; + QmakeProFile *rootProFile() const; -signals: - void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool, bool); - void buildDirectoryInitialized(); + void notifyChanged(const Utils::FilePath &name); public: - void scheduleAsyncUpdate(QmakeProFile::AsyncUpdateDelay delay = QmakeProFile::ParseLater); - void scheduleAsyncUpdateLater() { scheduleAsyncUpdate(); } - -protected: - RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) final; - -private: - ProjectExplorer::DeploymentKnowledge deploymentKnowledge() const override; - - void asyncUpdate(); - void buildFinished(bool success); - void activeTargetWasChanged(); - - QString executableFor(const QmakeProFile *file); - - void updateCppCodeModel(); - void updateQmlJSCodeModel(); - - static bool equalFileList(const QStringList &a, const QStringList &b); - - void updateBuildSystemData(); - void collectData(const QmakeProFile *file, ProjectExplorer::DeploymentData &deploymentData); - void collectApplicationData(const QmakeProFile *file, - ProjectExplorer::DeploymentData &deploymentData); - void collectLibraryData(const QmakeProFile *file, - ProjectExplorer::DeploymentData &deploymentData); - void startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay); - bool matchesKit(const ProjectExplorer::Kit *kit); - - void warnOnToolChainMismatch(const QmakeProFile *pro) const; - void testToolChain(ProjectExplorer::ToolChain *tc, const Utils::FilePath &path) const; + void scheduleUpdateAll(QmakeProFile::AsyncUpdateDelay delay); + void scheduleUpdateAllLater() { scheduleUpdateAll(QmakeProFile::ParseLater); } + void scheduleUpdateAllNowOrLater(); mutable QSet<const QPair<Utils::FilePath, Utils::FilePath>> m_toolChainWarnings; @@ -164,7 +187,7 @@ private: QString m_qmakeSysroot; QTimer m_asyncUpdateTimer; - QFutureInterface<void> *m_asyncUpdateFutureInterface = nullptr; + QFutureInterface<void> m_asyncUpdateFutureInterface; int m_pendingEvaluateFuturesCount = 0; AsyncUpdateState m_asyncUpdateState = Base; bool m_cancelEvaluate = false; @@ -174,10 +197,9 @@ private: Internal::CentralizedFolderWatcher *m_centralizedFolderWatcher = nullptr; - ProjectExplorer::Target *m_activeTarget = nullptr; - mutable ProjectExplorer::ProjectImporter *m_projectImporter = nullptr; - - ParseGuard m_guard; + ProjectExplorer::BuildSystem::ParseGuard m_guard; + QmakeBuildConfiguration *m_buildConfiguration = nullptr; + bool m_firstParseNeeded = true; }; } // namespace QmakeProjectManager |