Configuration values are passed between the interface and main code.
[openvpnui.git] / qml / pages / ConfigurePage.qml
1 /*
2   Copyright (C) 2014 David Llewellyn-Jones
3   Contact: David Llewellyn-Jones <david@flypig.co.uk>
4   All rights reserved.
5
6   You may use this file under the terms of BSD license as follows:
7
8   Redistribution and use in source and binary forms, with or without
9   modification, are permitted provided that the following conditions are met:
10     * Redistributions of source code must retain the above copyright
11       notice, this list of conditions and the following disclaimer.
12     * Redistributions in binary form must reproduce the above copyright
13       notice, this list of conditions and the following disclaimer in the
14       documentation and/or other materials provided with the distribution.
15     * Neither the name of the Jolla Ltd nor the
16       names of its contributors may be used to endorse or promote products
17       derived from this software without specific prior written permission.
18
19   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
23   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30   Built using the standard template from Jolla
31   Copyright (C) 2013 Jolla Ltd.
32   Contact: Thomas Perl <thomas.perl@jollamobile.com>
33 */
34
35 import QtQuick 2.0
36 import Sailfish.Silica 1.0
37
38
39 Dialog {
40     id: configurePage
41     canAccept: true
42     acceptDestinationAction: PageStackAction.Pop
43
44     Connections {
45         target:VpnControl
46     }
47
48     SilicaFlickable {
49         // ComboBox requires a flickable ancestor
50         width: parent.width
51         height: parent.height
52         interactive: true
53
54         anchors.fill: parent
55         contentHeight: configureColumn.height + Theme.paddingLarge
56
57         VerticalScrollDecorator {}
58
59         Column {
60             id: configureColumn
61             width: parent.width
62             spacing: Theme.paddingLarge
63
64             DialogHeader {
65                 acceptText: "Accept"
66             }
67
68             TextField {
69                 id: configureAddress
70                 width: parent.width
71                 text: VpnControl.server
72                 label: "Server address"
73                 placeholderText: "Server address"
74                 focus: true
75                 EnterKey.onClicked: configurePort.focus = true
76             }
77
78             TextField {
79                 id: configurePort
80                 width: parent.width
81                 text: VpnControl.port;
82                 inputMethodHints: Qt.ImhFormattedNumbersOnly
83                 label: "Port number"
84                 placeholderText: "Port number"
85                 EnterKey.onClicked: parent.focus = true
86             }
87
88             TextSwitch {
89                 id: configureCompression
90                 text: "Use Compression"
91                 checked: VpnControl.compressed
92                 automaticCheck: true
93             }
94
95             TextSwitch {
96                 id: configureTLS
97                 text: "Use TLS authentication"
98                 checked: VpnControl.useTLS
99                 onCheckedChanged: {
100                     configureTLSdirection.enabled = checked
101                     configureTLSinfo.visible = checked
102                 }
103                 automaticCheck: true
104             }
105             // set currentIndex to change the selected value
106             ComboBox {
107                 id: configureTLSdirection
108                 width: parent.width
109                 label: "TLS direction"
110                 currentIndex: VpnControl.tlsDirection;
111                 enabled: false
112
113                 menu: ContextMenu {
114                     MenuItem { text: "0" }
115                     MenuItem { text: "1" }
116                 }
117             }
118
119             Label {
120                 text: "Place key files on SD card:"
121                 color: Theme.secondaryColor
122                 font.pixelSize: Theme.fontSizeSmall
123                 x: Theme.paddingLarge
124             }
125             Label {
126                 text: "\tca.crt"
127                 color: Theme.secondaryColor
128                 font.pixelSize: Theme.fontSizeSmall
129                 x: Theme.paddingLarge
130             }
131             Label {
132                 text: "\tclient.crt"
133                 color: Theme.secondaryColor
134                 font.pixelSize: Theme.fontSizeSmall
135                 x: Theme.paddingLarge
136             }
137             Label {
138                 text: "\tclient.key"
139                 color: Theme.secondaryColor
140                 font.pixelSize: Theme.fontSizeSmall
141                 x: Theme.paddingLarge
142             }
143             Label {
144                 id: configureTLSinfo
145                 visible: false
146                 text: "\tta.key"
147                 color: Theme.secondaryColor
148                 font.pixelSize: Theme.fontSizeSmall
149                 x: Theme.paddingLarge
150             }
151
152         }
153     }
154
155     onAccepted: {
156         VpnControl.setServer(configureAddress.text)
157         VpnControl.setPort(configurePort.text)
158         VpnControl.setCompressed(configureCompression.checked)
159         VpnControl.setUseTLS(configureTLS.checked)
160         VpnControl.setTlsDirection(configureTLSdirection.currentIndex)
161         VpnControl.updateConfiguration()
162     }
163
164 }
165
166
167
168
169