summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2014-12-04 00:41:24 +0100
committerJavier <dev.git@javispedro.com>2014-12-04 00:41:24 +0100
commit1b920c3c0593f6810dd900c882e4760cbbbeeb56 (patch)
treebbe209ba5c88cbe2acdb981857a08e1106ecec7a /daemon
parentddcc8ada42c186e980626ff617be038f45106145 (diff)
parse capabilities of installed apps
Diffstat (limited to 'daemon')
-rw-r--r--daemon/appinfo.cpp11
-rw-r--r--daemon/appinfo.h11
-rw-r--r--daemon/appmanager.cpp10
3 files changed, 32 insertions, 0 deletions
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<QString, int> keyInts;
QHash<int, QString> 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 <QStandardPaths>
#include <QJsonDocument>
#include <QJsonObject>
+#include <QJsonArray>
#include <QDir>
#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());