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;
+ case 5:
+ configFilename.value = engine.selectedFilename
+ break;
+ }
+ _fileDialogue = 0;
+ }
+ }
+
SilicaFlickable {
// ComboBox requires a flickable ancestor
TextField {
id: configureAddress
width: parent.width
+ text: VpnControl.server
label: "Server address"
placeholderText: "Server address"
focus: true
TextField {
id: configurePort
width: parent.width
+ text: VpnControl.port;
inputMethodHints: Qt.ImhFormattedNumbersOnly
label: "Port number"
placeholderText: "Port number"
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" }
}
}
- 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
+ ValueButtonAlignRight {
+ id: caCertFilename
+ label: "CA cert"
+ value: VpnControl.caCertFile
+ placeholderText: "Select"
+ width: parent.width
+ onClicked: {
+ _fileDialogue = 1
+ Functions.goToInitial(Functions.folderFromFile(value), "crt")
+ }
}
- Label {
- text: "\tclient.crt"
- color: Theme.secondaryColor
- font.pixelSize: Theme.fontSizeSmall
- x: Theme.paddingLarge
+
+ ValueButtonAlignRight {
+ id: clientCertFilename
+ label: "Client cert"
+ value: VpnControl.clientCertFile
+ placeholderText: "Select"
+ width: parent.width
+ onClicked: {
+ _fileDialogue = 2;
+ Functions.goToInitial(Functions.folderFromFile(value), "crt")
+ }
}
- Label {
- text: "\tclient.key"
- color: Theme.secondaryColor
- font.pixelSize: Theme.fontSizeSmall
- x: Theme.paddingLarge
+
+ ValueButtonAlignRight {
+ id: clientKeyFilename
+ label: "Client key"
+ value: VpnControl.clientKeyFile
+ placeholderText: "Select"
+ width: parent.width
+ onClicked: {
+ _fileDialogue = 3;
+ Functions.goToInitial(Functions.folderFromFile(value), "key")
+ }
}
- Label {
- id: configureTLSinfo
- visible: false
- text: "\tta.key"
- color: Theme.secondaryColor
- font.pixelSize: Theme.fontSizeSmall
- x: Theme.paddingLarge
+
+ ValueButtonAlignRight {
+ id: tlsKeyFilename
+ label: "TLS key"
+ value: VpnControl.tlsKeyFile
+ placeholderText: "Select"
+ width: parent.width
+ enabled: configureTLS.checked
+ onClicked: {
+ _fileDialogue = 4;
+ Functions.goToInitial(Functions.folderFromFile(value), "key")
+ }
}
+ ValueButtonAlignRight {
+ id: configFilename
+ label: "Extra options"
+ value: VpnControl.configFile
+ placeholderText: "Select"
+ width: parent.width
+ onClicked: {
+ _fileDialogue = 5;
+ Functions.goToInitial(Functions.folderFromFile(value), "ovpn")
+ }
+ }
}
}
onAccepted: {
+ VpnControl.setServer(configureAddress.text)
+ VpnControl.setPort(configurePort.text)
+ VpnControl.setCompressed(configureCompression.checked)
+ VpnControl.setUseTLS(configureTLS.checked)
+ VpnControl.setTlsDirection(configureTLSdirection.currentIndex)
+ VpnControl.updateConfiguration()
+ VpnControl.setCaCertFile(caCertFilename.value)
+ VpnControl.setClientCertFile(clientCertFilename.value)
+ VpnControl.setClientKeyFile(clientKeyFilename.value)
+ VpnControl.setTlsKeyFile(tlsKeyFilename.value)
+ VpnControl.setConfigFile(configFilename.value)
}
-
}
-
-
-
-
-