diff --git a/harbour-hydrogen.pro b/harbour-hydrogen.pro index c143376..1b6841c 100644 --- a/harbour-hydrogen.pro +++ b/harbour-hydrogen.pro @@ -4,6 +4,7 @@ CONFIG += sailfishapp_qml DISTFILES += qml/harbour-hydrogen.qml \ qml/HydrogenWebView.qml \ + qml/HydrogenWebViewPage.qml \ qml/cover/CoverPage.qml \ qml/framescript.js \ qml/server.py \ diff --git a/qml/HydrogenWebView.qml b/qml/HydrogenWebView.qml index aa33894..ad3679f 100644 --- a/qml/HydrogenWebView.qml +++ b/qml/HydrogenWebView.qml @@ -1,23 +1,47 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 +import Sailfish.Silica.private 1.0 as Private import Sailfish.WebView 1.0 import Sailfish.WebEngine 1.0 import io.thp.pyotherside 1.5 -WebViewPage { - +WebViewFlickable { + id: webviewFlickable allowedOrientations: Orientation.All + function runJavaScript(script) { + webView.runJavaScript(script) + } + function enterSettingsView() { + var urlParts = app.hydrogenUrl.toString().split('session') + var settingsURL = urlParts[0] + 'session/'+ urlParts[1].split('/')[1] + '/settings' + app.hydrogenUrl = settingsURL + } + + Private.VirtualKeyboardObserver { + id: virtualKeyboardObserver - Component.onCompleted: { - WebEngineSettings.setPreference( - "security.fileuri.strict_origin_policy", false, - WebEngineSettings.BoolPref) + active: webview.enabled + //transpose: window._transpose + //orientation: browserPage.orientation + + //onWindowChanged: webview.chromeWindow = window + + // Update content height only after virtual keyboard fully opened. + states: State { + name: "boundHeightControl" + when: virtualKeyboardObserver.opened && webview.enabled + PropertyChanges { + target: webview + //TODO: make this work for Landscape mode as well + viewportHeight: Screen.height - virtualKeyboardObserver.imSize + } + } } - WebView { + + webView { id: webview url: app.hydrogenUrl anchors.fill: parent - onViewInitialized: { console.log("loading framescript") webview.loadFrameScript(Qt.resolvedUrl("framescript.js")) @@ -31,11 +55,6 @@ WebViewPage { case "webview:log": console.log("webapp-log: " + JSON.stringify(data)) break - case "embed:linkclicked": - var url = '/^http:\/\/localhost/' - if (!data.uri.match('http://localhost')) - Qt.openUrlExternally(data['uri']) - break default: console.log("Message: " + JSON.stringify( message) + " data: " + JSON.stringify(data)) @@ -43,3 +62,5 @@ WebViewPage { } } } + + diff --git a/qml/HydrogenWebViewPage.qml b/qml/HydrogenWebViewPage.qml new file mode 100644 index 0000000..ec80c99 --- /dev/null +++ b/qml/HydrogenWebViewPage.qml @@ -0,0 +1,25 @@ +import QtQuick 2.0 +import Sailfish.Silica 1.0 +import Sailfish.WebView 1.0 + +WebViewPage { + property string url + + HydrogenWebView { + id: hydrogenwebview + anchors.fill: parent + urlFromParent: url + + PullDownMenu { + MenuItem{ + text: qsTr('Settings') + onClicked: hydrogenwebview.enterSettingsView() + } + MenuItem{ + text: qsTr('Back') + + } + } + + } +} diff --git a/qml/harbour-hydrogen.qml b/qml/harbour-hydrogen.qml index f8e5457..0cea9e9 100644 --- a/qml/harbour-hydrogen.qml +++ b/qml/harbour-hydrogen.qml @@ -60,7 +60,8 @@ ApplicationWindow { } } - initialPage: HydrogenWebView { - id: webview + initialPage: + HydrogenWebViewPage{ + id: webviewPage } }