1692d1e3d98d83ac2cdcefb1bbefa790c5764258
[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 Dialog {
39     id: configurePage
40     canAccept: true
41     acceptDestinationAction: PageStackAction.Pop
42
43     Connections {
44         target:VpnControl
45     }
46
47     SilicaFlickable {
48         // ComboBox requires a flickable ancestor
49         width: parent.width
50         height: parent.height
51         interactive: true
52
53         anchors.fill: parent
54         contentHeight: configureColumn.height + Theme.paddingLarge
55
56         VerticalScrollDecorator {}
57
58         Column {
59             id: configureColumn
60             width: parent.width
61             spacing: Theme.paddingLarge
62
63             DialogHeader {
64                 acceptText: "Accept"
65             }
66
67             TextField {
68                 id: configureAddress
69                 width: parent.width
70                 text: VpnControl.server
71                 label: "Server address"
72                 placeholderText: "Server address"
73                 focus: true
74                 EnterKey.onClicked: configurePort.focus = true
75             }
76
77             TextField {
78                 id: configurePort
79                 width: parent.width
80                 text: VpnControl.port;
81                 inputMethodHints: Qt.ImhFormattedNumbersOnly
82                 label: "Port number"
83                 placeholderText: "Port number"
84                 EnterKey.onClicked: parent.focus = true
85             }
86
87             TextSwitch {
88                 id: configureCompression
89                 text: "Use Compression"
90                 checked: VpnControl.compressed
91                 automaticCheck: true
92             }
93
94             TextSwitch {
95                 id: configureTLS
96                 text: "Use TLS authentication"
97                 checked: VpnControl.useTLS
98                 onCheckedChanged: {
99                     configureTLSdirection.enabled = checked
100                     configureTLSinfo.visible = checked
101                 }
102                 automaticCheck: true
103             }
104             // set currentIndex to change the selected value
105             ComboBox {
106                 id: configureTLSdirection
107                 width: parent.width
108                 label: "TLS direction"
109                 currentIndex: VpnControl.tlsDirection;
110                 enabled: false
111
112                 menu: ContextMenu {
113                     MenuItem { text: "0" }
114                     MenuItem { text: "1" }
115                 }
116             }
117
118             Button {
119                 id: connect
120                 text: "Select key"
121                 enabled: true
122                 onClicked: VpnControl.vpnConnect()
123             }
124
125             Label {
126                 text: "Place key files on SD card:"
127                 color: Theme.secondaryColor
128                 font.pixelSize: Theme.fontSizeSmall
129                 x: Theme.paddingLarge
130             }
131             Label {
132                 text: "\tca.crt"
133                 color: Theme.secondaryColor
134                 font.pixelSize: Theme.fontSizeSmall
135                 x: Theme.paddingLarge
136             }
137             Label {
138                 text: "\tclient.crt"
139                 color: Theme.secondaryColor
140                 font.pixelSize: Theme.fontSizeSmall
141                 x: Theme.paddingLarge
142             }
143             Label {
144                 text: "\tclient.key"
145                 color: Theme.secondaryColor
146                 font.pixelSize: Theme.fontSizeSmall
147                 x: Theme.paddingLarge
148             }
149             Label {
150                 id: configureTLSinfo
151                 visible: false
152                 text: "\tta.key"
153                 color: Theme.secondaryColor
154                 font.pixelSize: Theme.fontSizeSmall
155                 x: Theme.paddingLarge
156             }
157
158         }
159     }
160
161     onAccepted: {
162         VpnControl.setServer(configureAddress.text)
163         VpnControl.setPort(configurePort.text)
164         VpnControl.setCompressed(configureCompression.checked)
165         VpnControl.setUseTLS(configureTLS.checked)
166         VpnControl.setTlsDirection(configureTLSdirection.currentIndex)
167         VpnControl.updateConfiguration()
168     }
169
170 }
171
172
173
174
175