diff options
| author | Philipp Andreas <github@smurfy.de> | 2015-01-14 02:10:36 +0100 |
|---|---|---|
| committer | Philipp Andreas <github@smurfy.de> | 2015-01-14 02:10:36 +0100 |
| commit | 857d9547a9fc4a00c6e621fb54720d047ba90864 (patch) | |
| tree | d6aa0a6ea8bf76e6da7d353ff6084db82d583fa9 /app/pebblestoreview.cpp | |
| parent | e8f9a4da6c486ee4da9ae300019856976ff0a760 (diff) | |
First prototype of pebble app store integration
Diffstat (limited to 'app/pebblestoreview.cpp')
| -rw-r--r-- | app/pebblestoreview.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/app/pebblestoreview.cpp b/app/pebblestoreview.cpp new file mode 100644 index 0000000..011d056 --- /dev/null +++ b/app/pebblestoreview.cpp @@ -0,0 +1,50 @@ +#include "pebblestoreview.h" +#include <QUrlQuery> +#include <QJsonDocument> +#include <QJsonObject> + +PebbleStoreView::PebbleStoreView() + : QQuickWebView() +{ + connect(this, SIGNAL(navigationRequested(QWebNavigationRequest*)), this, SLOT(onNavigationRequested(QWebNavigationRequest*))); +} + + +void PebbleStoreView::onNavigationRequested(QWebNavigationRequest* request) +{ + if (request->url().scheme() == "pebble") { + if (request->url().host() == "login") { + QUrlQuery *accessTokenFragment = new QUrlQuery(request->url().fragment()); + qDebug()<<"login"<<accessTokenFragment->queryItemValue("access_token"); + emit loginSuccess(accessTokenFragment->queryItemValue("access_token")); + } + } + if (request->url().scheme() == "pebble-method-call-js-frame") { + QString urlStr = ""; + + //Basic parse error string + QRegExp reg(".*; source was \"(.*)\";.*"); + reg.setMinimal(true); + if (reg.indexIn(request->url().errorString()) > -1) { + urlStr = reg.cap(1); + reg.setPattern("method=(.*)&args=(.*)$"); + reg.setMinimal(true); + if (reg.indexIn(urlStr) > -1) { + QString methodStr = reg.cap(1); + QString argsStr = QUrl::fromPercentEncoding(reg.cap(2).toUtf8()); + emit call(methodStr, argsStr); + if (methodStr == "loadAppToDeviceAndLocker") { + QJsonDocument jsonResponse = QJsonDocument::fromJson(argsStr.toUtf8()); + QJsonObject jsonObject = jsonResponse.object(); + QJsonObject data = jsonObject.value("data").toObject(); + qDebug()<<"download"<<data.value("title").toString()<<data.value("pbw_file").toString(); + emit downloadPebbleApp(data.value("title").toString(), data.value("pbw_file").toString()); + } + } + } + } +} + + + + |
