From 1b920c3c0593f6810dd900c882e4760cbbbeeb56 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 4 Dec 2014 00:41:24 +0100 Subject: parse capabilities of installed apps --- daemon/appinfo.cpp | 11 +++++++++++ daemon/appinfo.h | 11 +++++++++++ daemon/appmanager.cpp | 10 ++++++++++ 3 files changed, 32 insertions(+) diff --git a/daemon/appinfo.cpp b/daemon/appinfo.cpp index e2406b8..fd43248 100644 --- a/daemon/appinfo.cpp +++ b/daemon/appinfo.cpp @@ -10,6 +10,7 @@ struct AppInfoData : public QSharedData { QString versionLabel; bool watchface; bool jskit; + AppInfo::Capabilities capabilities; QHash keyInts; QHash keyNames; QString path; @@ -117,6 +118,16 @@ void AppInfo::setJSKit(bool b) d->jskit = b; } +AppInfo::Capabilities AppInfo::capabilities() const +{ + return d->capabilities; +} + +void AppInfo::setCapabilities(Capabilities caps) +{ + d->capabilities = caps; +} + void AppInfo::addAppKey(const QString &key, int value) { d->keyInts.insert(key, value); diff --git a/daemon/appinfo.h b/daemon/appinfo.h index 038a708..6f97639 100644 --- a/daemon/appinfo.h +++ b/daemon/appinfo.h @@ -12,6 +12,13 @@ class AppInfo { Q_GADGET +public: + enum Capability { + Location = 1 << 0, + Configurable = 1 << 2 + }; + Q_DECLARE_FLAGS(Capabilities, Capability) + Q_PROPERTY(QUuid uuid READ uuid WRITE setUuid) Q_PROPERTY(QString shortName READ shortName WRITE setShortName) Q_PROPERTY(QString longName READ longName WRITE setLongName) @@ -20,6 +27,7 @@ class AppInfo Q_PROPERTY(QString versionLabel READ versionLabel WRITE setVersionLabel) Q_PROPERTY(bool watchface READ isWatchface WRITE setWatchface) Q_PROPERTY(bool jskit READ isJSKit WRITE setJSKit) + Q_PROPERTY(Capabilities capabilities READ capabilities WRITE setCapabilities) Q_PROPERTY(QString path READ path WRITE setPath) public: @@ -52,6 +60,9 @@ public: bool isJSKit() const; void setJSKit(bool b); + Capabilities capabilities() const; + void setCapabilities(Capabilities caps); + void addAppKey(const QString &key, int value); bool hasAppKeyValue(int value) const; diff --git a/daemon/appmanager.cpp b/daemon/appmanager.cpp index 867a15e..2520ba6 100644 --- a/daemon/appmanager.cpp +++ b/daemon/appmanager.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "appmanager.h" @@ -109,6 +110,15 @@ void AppManager::scanApp(const QString &path) info.setWatchface(watchapp["watchface"].toBool()); info.setJSKit(appDir.exists("pebble-js-app.js")); + const QJsonArray capabilities = root["capabilities"].toArray(); + AppInfo::Capabilities caps = 0; + for (QJsonArray::const_iterator it = capabilities.constBegin(); it != capabilities.constEnd(); ++it) { + QString cap = (*it).toString(); + if (cap == "location") caps |= AppInfo::Location; + if (cap == "configurable") caps |= AppInfo::Configurable; + } + info.setCapabilities(caps); + const QJsonObject appkeys = root["appKeys"].toObject(); for (QJsonObject::const_iterator it = appkeys.constBegin(); it != appkeys.constEnd(); ++it) { info.addAppKey(it.key(), it.value().toInt()); -- cgit v1.2.3