summaryrefslogtreecommitdiff
path: root/daemon/jskitmanager.cpp
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2014-11-30 21:32:13 +0100
committerJavier <dev.git@javispedro.com>2014-11-30 21:32:13 +0100
commitdadca6f0b1e4660876cccb51702998d378a5dc03 (patch)
treed445720615174a49ec79dbe5bb3817778a6451df /daemon/jskitmanager.cpp
parent2e0e33bd2d588a96fc471d024de583ec7d287f5e (diff)
convert appinfo into a Q_GADGET with properties
Diffstat (limited to 'daemon/jskitmanager.cpp')
-rw-r--r--daemon/jskitmanager.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/daemon/jskitmanager.cpp b/daemon/jskitmanager.cpp
index 698b22b..41451ac 100644
--- a/daemon/jskitmanager.cpp
+++ b/daemon/jskitmanager.cpp
@@ -1,4 +1,4 @@
-#include <QQmlEngine>
+#include <QFile>
#include <QJSValueIterator>
#include "jskitmanager.h"
#include "jskitmanager_p.h"
@@ -28,9 +28,9 @@ JSKitManager::~JSKitManager()
void JSKitManager::handleAppStarted(const QUuid &uuid)
{
- const auto &info = _apps->info(uuid);
- if (!info.uuid.isNull() && info.isJSKit) {
- logger()->debug() << "Preparing to start JSKit app" << info.uuid << info.shortName;
+ AppInfo info = _apps->info(uuid);
+ if (!info.uuid().isNull() && info.isJSKit()) {
+ logger()->debug() << "Preparing to start JSKit app" << info.uuid() << info.shortName();
_curApp = info;
startJsApp();
}
@@ -38,21 +38,29 @@ void JSKitManager::handleAppStarted(const QUuid &uuid)
void JSKitManager::handleAppStopped(const QUuid &uuid)
{
- if (!_curApp.uuid.isNull()) {
- if (_curApp.uuid != uuid) {
+ if (!_curApp.uuid().isNull()) {
+ if (_curApp.uuid() != uuid) {
logger()->warn() << "Closed app with invalid UUID";
}
- _curApp = AppManager::AppInfo();
+ stopJsApp();
+ _curApp.setUuid(QUuid()); // Clear the uuid to force invalid app
}
}
void JSKitManager::startJsApp()
{
if (_engine) stopJsApp();
+ if (_curApp.uuid().isNull()) {
+ logger()->warn() << "Attempting to start JS app with invalid UUID";
+ return;
+ }
+
_engine = new QJSEngine(this);
_jspebble = new JSKitPebble(this);
+ logger()->debug() << "starting JS app";
+
QJSValue globalObj = _engine->globalObject();
globalObj.setProperty("Pebble", _engine->newQObject(_jspebble));
@@ -62,12 +70,21 @@ void JSKitManager::startJsApp()
it.next();
logger()->debug() << "JS property:" << it.name();
}
+
+ QFile scriptFile(_curApp.path() + "/pebble-js-app.js");
+ if (!scriptFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ logger()->warn() << "Failed to open JS file at:" << scriptFile.fileName();
+ stopJsApp();
+ return;
+ }
}
void JSKitManager::stopJsApp()
{
if (!_engine) return; // Nothing to do!
+ logger()->debug() << "stopping JS app";
+
_engine->collectGarbage();
delete _engine;