ecb75da0f62c08674e66c8b4ec875d76a80e06ff
[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 import QtQuick.Dialogs 1.0
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             Button {
120                 id: connect
121                 text: "Select key"
122                 enabled: true
123                 onClicked: VpnControl.vpnConnect()
124             }
125
126             Label {
127                 text: "Place key files on SD card:"
128                 color: Theme.secondaryColor
129                 font.pixelSize: Theme.fontSizeSmall
130                 x: Theme.paddingLarge
131             }
132             Label {
133                 text: "\tca.crt"
134                 color: Theme.secondaryColor
135                 font.pixelSize: Theme.fontSizeSmall
136                 x: Theme.paddingLarge
137             }
138             Label {
139                 text: "\tclient.crt"
140                 color: Theme.secondaryColor
141                 font.pixelSize: Theme.fontSizeSmall
142                 x: Theme.paddingLarge
143             }
144             Label {
145                 text: "\tclient.key"
146                 color: Theme.secondaryColor
147                 font.pixelSize: Theme.fontSizeSmall
148                 x: Theme.paddingLarge
149             }
150             Label {
151                 id: configureTLSinfo
152                 visible: false
153                 text: "\tta.key"
154                 color: Theme.secondaryColor
155                 font.pixelSize: Theme.fontSizeSmall
156                 x: Theme.paddingLarge
157             }
158
159         }
160     }
161
162     onAccepted: {
163         VpnControl.setServer(configureAddress.text)
164         VpnControl.setPort(configurePort.text)
165         VpnControl.setCompressed(configureCompression.checked)
166         VpnControl.setUseTLS(configureTLS.checked)
167         VpnControl.setTlsDirection(configureTLSdirection.currentIndex)
168         VpnControl.updateConfiguration()
169     }
170
171 }
172
173
174
175
176