Integrated file selection dialogue with the main code. Improved the
[openvpnui.git] / qml / pages / ConfigurePage.qml
index b6ad3da..1615c97 100644 (file)
@@ -1,6 +1,6 @@
 /*
-  Copyright (C) 2013 Jolla Ltd.
-  Contact: Thomas Perl <thomas.perl@jollamobile.com>
+  Copyright (C) 2014 David Llewellyn-Jones
+  Contact: David Llewellyn-Jones <david@flypig.co.uk>
   All rights reserved.
 
   You may use this file under the terms of BSD license as follows:
   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+  Built using the standard template from Jolla
+  Copyright (C) 2013 Jolla Ltd.
+  Contact: Thomas Perl <thomas.perl@jollamobile.com>
 */
 
 import QtQuick 2.0
 import Sailfish.Silica 1.0
-
+import "../components"
+import "../filebrowse/pages/functions.js" as Functions
 
 Dialog {
     id: configurePage
     canAccept: true
     acceptDestinationAction: PageStackAction.Pop
+    property int _fileDialogue: 0
+
+    Connections {
+        target:VpnControl
+    }
+
+    // connect signals from engine to panels
+    Connections {
+        target: engine
+        onSelectedFilenameChanged: {
+            switch (_fileDialogue) {
+                case 1:
+                    caCertFilename.value = engine.selectedFilename
+                    break;
+                case 2:
+                    clientCertFilename.value = engine.selectedFilename
+                    break;
+                case 3:
+                    clientKeyFilename.value = engine.selectedFilename
+                    break;
+                case 4:
+                    tlsKeyFilename.value = engine.selectedFilename
+                    break;
+            }
+            _fileDialogue = 0;
+        }
+    }
+
 
     SilicaFlickable {
         // ComboBox requires a flickable ancestor
@@ -60,6 +93,7 @@ Dialog {
             TextField {
                 id: configureAddress
                 width: parent.width
+                text: VpnControl.server
                 label: "Server address"
                 placeholderText: "Server address"
                 focus: true
@@ -69,6 +103,7 @@ Dialog {
             TextField {
                 id: configurePort
                 width: parent.width
+                text: VpnControl.port;
                 inputMethodHints: Qt.ImhFormattedNumbersOnly
                 label: "Port number"
                 placeholderText: "Port number"
@@ -78,23 +113,23 @@ Dialog {
             TextSwitch {
                 id: configureCompression
                 text: "Use Compression"
+                checked: VpnControl.compressed
+                automaticCheck: true
             }
 
             TextSwitch {
                 id: configureTLS
                 text: "Use TLS authentication"
-                onCheckedChanged: {
-                    configureTLSdirection.enabled = checked
-                    configureTLSinfo.visible = checked
-                }
+                checked: VpnControl.useTLS
+                automaticCheck: true
             }
             // set currentIndex to change the selected value
             ComboBox {
                 id: configureTLSdirection
                 width: parent.width
                 label: "TLS direction"
-                currentIndex: 1
-                enabled: false
+                currentIndex: VpnControl.tlsDirection;
+                enabled: configureTLS.checked
 
                 menu: ContextMenu {
                     MenuItem { text: "0" }
@@ -102,43 +137,60 @@ Dialog {
                 }
             }
 
-            Label {
-                text: "Place key files on SD card:"
-                color: Theme.secondaryColor
-                font.pixelSize: Theme.fontSizeSmall
-                x: Theme.paddingLarge
-            }
-            Label {
-                text: "\tca.crt"
-                color: Theme.secondaryColor
-                font.pixelSize: Theme.fontSizeSmall
-                x: Theme.paddingLarge
-            }
-            Label {
-                text: "\tclient.crt"
-                color: Theme.secondaryColor
-                font.pixelSize: Theme.fontSizeSmall
-                x: Theme.paddingLarge
+            ValueButtonAlignRight {
+                id: caCertFilename
+                label: "CA cert"
+                value: "Select"
+                width: parent.width
+                onClicked: {
+                    _fileDialogue = 1
+                    Functions.goToInitial(Functions.folderFromFile(value), "crt")
+                }
             }
-            Label {
-                text: "\tclient.key"
-                color: Theme.secondaryColor
-                font.pixelSize: Theme.fontSizeSmall
-                x: Theme.paddingLarge
+
+            ValueButtonAlignRight {
+                id: clientCertFilename
+                value: "Select"
+                label: "Client cert"
+                width: parent.width
+                onClicked: {
+                    _fileDialogue = 2;
+                    Functions.goToInitial(Functions.folderFromFile(value), "crt")
+                }
             }
-            Label {
-                id: configureTLSinfo
-                visible: false
-                text: "\tta.key"
-                color: Theme.secondaryColor
-                font.pixelSize: Theme.fontSizeSmall
-                x: Theme.paddingLarge
+
+            ValueButtonAlignRight {
+                id: clientKeyFilename
+                value: "Select"
+                label: "Client key"
+                width: parent.width
+                onClicked: {
+                    _fileDialogue = 3;
+                    Functions.goToInitial(Functions.folderFromFile(value), "key")
+                }
             }
 
+            ValueButtonAlignRight {
+                id: tlsKeyFilename
+                value: "Select"
+                label: "TLS key"
+                width: parent.width
+                enabled: configureTLS.checked
+                onClicked: {
+                    _fileDialogue = 4;
+                    Functions.goToInitial(Functions.folderFromFile(value), "key")
+                }
+            }
         }
     }
 
     onAccepted: {
+        VpnControl.setServer(configureAddress.text)
+        VpnControl.setPort(configurePort.text)
+        VpnControl.setCompressed(configureCompression.checked)
+        VpnControl.setUseTLS(configureTLS.checked)
+        VpnControl.setTlsDirection(configureTLSdirection.currentIndex)
+        VpnControl.updateConfiguration()
     }
 
 }