Updated more copyright files
[openvpnui.git] / qml / pages / ConnectPage.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 Page {
40     id: connectPage
41
42     Connections {
43         target:VpnControl
44         onStatusChanged: {
45             updateStatus(status)
46         }
47     }
48
49     function updateStatus(status) {
50         switch (status) {
51         case 0:
52             statusText.text = "Disconnected"
53             busy.running = false
54             connect.enabled = true
55             disconnect.enabled = false
56             break
57         case 1:
58             statusText.text = "Initialising"
59             busy.running = true
60             connect.enabled = false
61             disconnect.enabled = true
62             break
63         case 2:
64             statusText.text = "Connecting"
65             busy.running = true
66             connect.enabled = false
67             disconnect.enabled = true
68             break
69         case 3:
70             statusText.text = "Connected"
71             busy.running = false
72             connect.enabled = false
73             disconnect.enabled = true
74             break
75         case 4:
76             statusText.text = "Disconnecting"
77             busy.running = true
78             connect.enabled = false
79             disconnect.enabled = false
80             break
81         default:
82             statusText.text = "Invalid"
83             busy.running = false
84             connect.enabled = true
85             disconnect.enabled = false
86             break
87         }
88     }
89
90     // To enable PullDownMenu, place our content in a SilicaFlickable
91     SilicaFlickable {
92         anchors.fill: parent
93
94         // PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
95         PullDownMenu {
96             MenuItem {
97                 text: "Configure"
98                 onClicked: pageStack.push(Qt.resolvedUrl("ConfigurePage.qml"))
99             }
100         }
101
102         contentHeight: column.height + Theme.paddingLarge
103
104         // Why is this necessary?
105         contentWidth: parent.width
106
107         VerticalScrollDecorator {}
108         // Place our content in a Column.  The PageHeader is always placed at the top
109         // of the page, followed by our content.
110         Column {
111             id: column
112
113             width: parent.width
114             spacing: Theme.paddingLarge
115
116             PageHeader {
117                 title: "OpenVPN Control"
118             }
119             Row {
120                 spacing: Theme.paddingLarge
121                 anchors.horizontalCenter: parent.horizontalCenter
122                 Button {
123                     id: connect
124                     text: "Connect"
125                     enabled: true
126                     onClicked: VpnControl.vpnConnect()
127                 }
128                 Button {
129                     id : disconnect
130                     text: "Disconnect"
131                     enabled: true
132                     onClicked: VpnControl.vpnDisconnect();
133                 }
134             }
135             Label {
136                 id: statusText
137                 text: "No status"
138                 color: Theme.highlightColor
139                 anchors.horizontalCenter: parent.horizontalCenter
140                 font.family: Theme.fontFamilyHeading
141             }
142             Row {
143                 spacing: Theme.paddingLarge
144                 anchors.horizontalCenter: parent.horizontalCenter
145                 BusyIndicator {
146                     id: busy
147                     running: false
148                     size: BusyIndicatorSize.Large
149                     anchors.verticalCenter: parent.verticalCenter
150                 }
151             }
152         }
153     }
154 }
155
156