diff --git a/src/plugins/android/androidextralibrarylistmodel.cpp b/src/plugins/android/androidextralibrarylistmodel.cpp index 500664a3158..a0dc80e46a5 100644 --- a/src/plugins/android/androidextralibrarylistmodel.cpp +++ b/src/plugins/android/androidextralibrarylistmodel.cpp @@ -85,21 +85,27 @@ QVariant AndroidExtraLibraryListModel::data(const QModelIndex &index, int role) void AndroidExtraLibraryListModel::updateModel() { + RunConfiguration *rc = m_target->activeRunConfiguration(); + QTC_ASSERT(rc, return); + + const ProjectNode *node = m_target->project()->findNodeForBuildKey(rc->buildKey()); + QTC_ASSERT(node, return); + AndroidQtSupport *qtSupport = Android::AndroidManager::androidQtSupport(m_target); QTC_ASSERT(qtSupport, return); - if (qtSupport->parseInProgress(m_target)) { + if (node->parseInProgress()) { emit enabledChanged(false); return; } bool enabled; beginResetModel(); - if (qtSupport->validParse(m_target)) { + if (node->validParse()) { m_entries = qtSupport->targetData(Constants::AndroidExtraLibs, m_target).toStringList(); enabled = true; } else { - // parsing error or not a application template + // parsing error m_entries.clear(); enabled = false; } diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h index 4046334b39a..aa112486265 100644 --- a/src/plugins/android/androidqtsupport.h +++ b/src/plugins/android/androidqtsupport.h @@ -67,8 +67,6 @@ public: virtual bool setTargetData(Core::Id role, const QVariant &value, const ProjectExplorer::Target *target) const = 0; - virtual bool parseInProgress(const ProjectExplorer::Target *target) const = 0; - virtual bool validParse(const ProjectExplorer::Target *target) const = 0; virtual bool extraLibraryEnabled(const ProjectExplorer::Target *target) const = 0; virtual void addFiles(const ProjectExplorer::Target *target, const QString &buildKey, diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 4e765776984..0a288bbc03f 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -342,6 +342,8 @@ public: const ProjectNode *asProjectNode() const final { return this; } virtual QStringList targetApplications() const { return {}; } + virtual bool parseInProgress() const { return false; } + virtual bool validParse() const { return false; } protected: explicit ProjectNode(const Utils::FileName &projectFilePath, const QByteArray &id = {}); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index c5d91ce00e6..f2f17d5b91e 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -87,18 +87,6 @@ static QmakeProFile *applicationProFile(const Target *target) return project->rootProFile()->findProFile(FileName::fromString(rc->buildKey())); } -bool QmakeAndroidSupport::parseInProgress(const Target *target) const -{ - QmakeProjectManager::QmakeProFile *pro = applicationProFile(target); - return !pro || pro->parseInProgress(); -} - -bool QmakeAndroidSupport::validParse(const Target *target) const -{ - QmakeProjectManager::QmakeProFile *pro = applicationProFile(target); - return pro->validParse() && pro->projectType() == ProjectType::ApplicationTemplate; -} - bool QmakeAndroidSupport::extraLibraryEnabled(const Target *target) const { QmakeProFile *pro = applicationProFile(target); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h index ce972411c9a..efa1ff9c0cb 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h @@ -42,8 +42,6 @@ public: bool setTargetData(Core::Id role, const QVariant &value, const ProjectExplorer::Target *target) const override; - bool parseInProgress(const ProjectExplorer::Target *target) const override; - bool validParse(const ProjectExplorer::Target *target) const override; bool extraLibraryEnabled(const ProjectExplorer::Target *target) const override; void addFiles(const ProjectExplorer::Target *target, const QString &buildKey, diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 17646daea4c..b9d380b3e21 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -216,6 +216,18 @@ QString QmakeProFileNode::buildKey() const return filePath().toString(); } +bool QmakeProFileNode::parseInProgress() const +{ + QmakeProjectManager::QmakeProFile *pro = proFile(); + return !pro || pro->parseInProgress(); +} + +bool QmakeProFileNode::validParse() const +{ + QmakeProjectManager::QmakeProFile *pro = proFile(); + return pro && pro->validParse(); +} + QStringList QmakeProFileNode::targetApplications() const { QStringList apps; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 614e25ab7a8..636be3775a3 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -93,6 +93,8 @@ public: bool showInSimpleTree() const override; QString buildKey() const override; + bool parseInProgress() const override; + bool validParse() const override; QStringList targetApplications() const override; AddNewInformation addNewInformation(const QStringList &files, Node *context) const override;