summaryrefslogtreecommitdiff
path: root/app/qml/pages/AppConfigDialog.qml
diff options
context:
space:
mode:
Diffstat (limited to 'app/qml/pages/AppConfigDialog.qml')
-rw-r--r--app/qml/pages/AppConfigDialog.qml87
1 files changed, 87 insertions, 0 deletions
diff --git a/app/qml/pages/AppConfigDialog.qml b/app/qml/pages/AppConfigDialog.qml
new file mode 100644
index 0000000..1562985
--- /dev/null
+++ b/app/qml/pages/AppConfigDialog.qml
@@ -0,0 +1,87 @@
+import QtQuick 2.0
+import QtQml 2.1
+import QtWebKit 3.0
+import Sailfish.Silica 1.0
+
+Dialog {
+ id: appConfigPage
+
+ property alias url: webview.url
+ property string uuid
+ property string name
+
+ SilicaWebView {
+ id: webview
+ visible: url != ""
+ anchors.fill: parent
+
+ header: DialogHeader {
+ title: "Configuring " + name
+ }
+
+ VerticalScrollDecorator { flickable: webview }
+
+ overridePageStackNavigation: true
+
+ onNavigationRequested: {
+ console.log("appconfig navigation requested to " + request.url);
+ var url = request.url.toString();
+ if (/^pebblejs:\/\/close/.exec(url)) {
+ var data = decodeURIComponent(url.substring(17));
+ console.log("appconfig requesting close; data: " + data);
+ pebbled.setAppConfiguration(uuid, data);
+ appConfigPage.canAccept = true;
+ appConfigPage.accept();
+ request.action = WebView.IgnoreRequest;
+ } else {
+ request.action = WebView.AcceptRequest;
+ }
+ }
+
+ experimental.itemSelector: Component {
+ Item {
+ Component.onCompleted: {
+ var dialog = pageStack.push(Qt.resolvedUrl("WebItemSelDialog.qml"), {
+ model: model.items
+ });
+ dialog.onRejected.connect(function() {
+ model.reject();
+ });
+ dialog.onAccepted.connect(function() {
+ model.accept(dialog.selectedIndex);
+ });
+ }
+ }
+ }
+ }
+
+ ProgressBar {
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ }
+
+ visible: webview.visible && webview.loading
+ minimumValue: 0
+ maximumValue: 100
+ indeterminate: webview.loadProgress === 0
+ value: webview.loadProgress
+ }
+
+ Text {
+ anchors.centerIn: parent
+ visible: url == ""
+ text: qsTr("No configuration settings available")
+ width: parent.width - 2*Theme.paddingLarge
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.Wrap
+ font {
+ pixelSize: Theme.fontSizeLarge
+ family: Theme.fontFamilyHeading
+ }
+ color: Theme.highlightColor
+ }
+
+ canAccept: false
+}