diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-04-22 11:24:08 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-04-22 13:36:48 +0200 |
commit | 638d4f104184fab48c541f8372284576e998a1a3 (patch) | |
tree | e0350c165d612f631b860fae266b7705fa534aee /src/lib/corelib/api | |
parent | 5877328c4dacb1283408083cb3538ea5bc46eae5 (diff) |
Expose in the API whether a product can be run.
The list of target artifacts is typically not yet available after
resolving, but we already know the product type.
Change-Id: I8bf98901b4123197b8d8b9ac4a4b351f251ee987
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/api')
-rw-r--r-- | src/lib/corelib/api/project.cpp | 9 | ||||
-rw-r--r-- | src/lib/corelib/api/projectdata.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/api/projectdata.h | 1 | ||||
-rw-r--r-- | src/lib/corelib/api/projectdata_p.h | 1 |
4 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index 22f4f7b51..c03cce5be 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -585,6 +585,14 @@ void ProjectPrivate::prepareChangeToProject() retrieveProjectData(m_projectData, internalProject); } +static bool productIsRunnable(const ResolvedProductConstPtr &product) +{ + return product->fileTags.contains("application") || + (product->fileTags.contains("application_bundle") && + product->moduleProperties->qbsPropertyValue(QLatin1String("targetOS")) + .toStringList().contains(QLatin1String("darwin"))); +} + void ProjectPrivate::retrieveProjectData(ProjectData &projectData, const ResolvedProjectConstPtr &internalProject) { @@ -596,6 +604,7 @@ void ProjectPrivate::retrieveProjectData(ProjectData &projectData, product.d->name = resolvedProduct->name; product.d->location = resolvedProduct->location; product.d->isEnabled = resolvedProduct->enabled; + product.d->isRunnable = productIsRunnable(resolvedProduct); foreach (const GroupPtr &resolvedGroup, resolvedProduct->groups) product.d->groups << createGroupDataFromGroup(resolvedGroup); if (resolvedProduct->enabled) { diff --git a/src/lib/corelib/api/projectdata.cpp b/src/lib/corelib/api/projectdata.cpp index a5cc6093e..31ba1ef33 100644 --- a/src/lib/corelib/api/projectdata.cpp +++ b/src/lib/corelib/api/projectdata.cpp @@ -414,6 +414,12 @@ bool ProductData::isEnabled() const return d->isEnabled; } +bool ProductData::isRunnable() const +{ + QBS_ASSERT(isValid(), return false); + return d->isRunnable; +} + bool operator==(const ProductData &lhs, const ProductData &rhs) { return lhs.name() == rhs.name() diff --git a/src/lib/corelib/api/projectdata.h b/src/lib/corelib/api/projectdata.h index ba0016d0c..1d7625b82 100644 --- a/src/lib/corelib/api/projectdata.h +++ b/src/lib/corelib/api/projectdata.h @@ -176,6 +176,7 @@ public: QList<TargetArtifact> targetArtifacts() const; QList<GroupData> groups() const; bool isEnabled() const; + bool isRunnable() const; private: QExplicitlySharedDataPointer<Internal::ProductDataPrivate> d; diff --git a/src/lib/corelib/api/projectdata_p.h b/src/lib/corelib/api/projectdata_p.h index 2eda4d932..b0006e89a 100644 --- a/src/lib/corelib/api/projectdata_p.h +++ b/src/lib/corelib/api/projectdata_p.h @@ -84,6 +84,7 @@ public: QList<GroupData> groups; QList<TargetArtifact> targetArtifacts; bool isEnabled; + bool isRunnable; bool isValid; }; |