aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/api
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-04-22 11:24:08 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-04-22 13:36:48 +0200
commit638d4f104184fab48c541f8372284576e998a1a3 (patch)
treee0350c165d612f631b860fae266b7705fa534aee /src/lib/corelib/api
parent5877328c4dacb1283408083cb3538ea5bc46eae5 (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.cpp9
-rw-r--r--src/lib/corelib/api/projectdata.cpp6
-rw-r--r--src/lib/corelib/api/projectdata.h1
-rw-r--r--src/lib/corelib/api/projectdata_p.h1
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;
};