summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2014-12-01 04:13:06 +0100
committerJavier <dev.git@javispedro.com>2014-12-01 04:13:06 +0100
commit81f91639969de0f3852a3fe73db13b4cb0ecf3b4 (patch)
treeac5f3146707e0b46723bfdf13b7ced5cdf16633d /app
parentbe139d8ff95160782b424134a025b30c82083e28 (diff)
hackily implement openURL by signalling the URLs via D-Bus to the
settings app, which pops a webview
Diffstat (limited to 'app')
-rw-r--r--app/app.pro3
-rw-r--r--app/pebbledinterface.cpp16
-rw-r--r--app/pebbledinterface.h4
-rw-r--r--app/qml/pages/WebViewPage.qml29
-rw-r--r--app/qml/pebble.qml5
5 files changed, 56 insertions, 1 deletions
diff --git a/app/app.pro b/app/app.pro
index cb4c33b..e08fa87 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -22,4 +22,5 @@ OTHER_FILES += \
qml/pebble.qml \
qml/images/* \
pebble.desktop \
- pebble.png
+ pebble.png \
+ qml/pages/WebViewPage.qml
diff --git a/app/pebbledinterface.cpp b/app/pebbledinterface.cpp
index c6f5674..8759863 100644
--- a/app/pebbledinterface.cpp
+++ b/app/pebbledinterface.cpp
@@ -19,6 +19,10 @@ PebbledInterface::PebbledInterface(QObject *parent) :
PEBBLED_DBUS_SERVICE, PEBBLED_DBUS_PATH, PEBBLED_DBUS_IFACE,
"pebbleChanged", this, SLOT(onPebbleChanged()));
+ QDBusConnection::sessionBus().connect(
+ PEBBLED_DBUS_SERVICE, PEBBLED_DBUS_PATH, PEBBLED_DBUS_IFACE,
+ "openUrl", this, SIGNAL(openUrl(QString)));
+
// simulate connected change on active changed
// as the daemon might not had a chance to send 'connectedChanged'
// when going down
@@ -163,3 +167,15 @@ void PebbledInterface::reconnect()
qDebug() << __FUNCTION__;
PebbledDbusInterface.call("reconnect");
}
+
+void PebbledInterface::test()
+{
+ qDebug() << __FUNCTION__;
+ PebbledDbusInterface.call("test");
+}
+
+void PebbledInterface::webviewClosed(const QString &result)
+{
+ qDebug() << __FUNCTION__;
+ PebbledDbusInterface.call("webviewClosed", QVariant::fromValue(result));
+}
diff --git a/app/pebbledinterface.h b/app/pebbledinterface.h
index 0a6f15d..7d00110 100644
--- a/app/pebbledinterface.h
+++ b/app/pebbledinterface.h
@@ -45,6 +45,8 @@ signals:
void nameChanged();
void addressChanged();
+ void openUrl(const QString &url);
+
public slots:
void setEnabled(bool);
void setActive(bool);
@@ -52,6 +54,8 @@ public slots:
void time();
void disconnect();
void reconnect();
+ void test();
+ void webviewClosed(const QString &result);
private slots:
void getUnitProperties();
diff --git a/app/qml/pages/WebViewPage.qml b/app/qml/pages/WebViewPage.qml
new file mode 100644
index 0000000..2c6fcf0
--- /dev/null
+++ b/app/qml/pages/WebViewPage.qml
@@ -0,0 +1,29 @@
+import QtQuick 2.0
+import QtQml 2.1
+import QtWebKit 3.0
+import Sailfish.Silica 1.0
+
+Page {
+ id: webviewPage
+
+ property alias url: webview.url
+
+ SilicaWebView {
+ id: webview
+ anchors.fill: parent
+
+ onNavigationRequested: {
+ console.log("navigation requested to " + request.url);
+ var url = request.url.toString()
+ if (/^pebblejs:\/\/close/.exec(url)) {
+ var data = decodeURI(url.substring(17));
+ console.log("match with pebble close regexp. data: " + data);
+ pebbled.webviewClosed(data);
+ pageStack.pop();
+ request.action = WebView.IgnoreRequest;
+ } else {
+ request.action = WebView.AcceptRequest;
+ }
+ }
+ }
+}
diff --git a/app/qml/pebble.qml b/app/qml/pebble.qml
index da3bfb5..2ff0839 100644
--- a/app/qml/pebble.qml
+++ b/app/qml/pebble.qml
@@ -41,5 +41,10 @@ ApplicationWindow
PebbledInterface {
id: pebbled
+
+ onOpenUrl: {
+ console.log("got open url: " + url);
+ pageStack.push(Qt.resolvedUrl("pages/WebViewPage.qml"), {url: url});
+ }
}
}