summaryrefslogtreecommitdiff
path: root/gui/components/StatusBox.qml
blob: fa24cd89faf4ac51e0ed75581c7b99fbfba490fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.14
import QtQuick.Layouts 1.14

import QtQuick.Templates 2.12 as T
import QtQuick.Controls.impl 2.12
import QtQuick.Controls.Material 2.12
import QtQuick.Controls.Material.impl 2.12
import "../themes/themes.js" as Theme

Item {
    id: statusbox
    anchors.fill: parent

    VPNState {
        id: vpn
    }

    Rectangle {
        id: statusBoxBackground
        anchors.fill: parent
        anchors.margins: 20
        anchors.bottomMargin: 30
        height: 300
        radius: 10
        color: Theme.bgColor
        border.color: Theme.accentOff
        border.width: 2
        antialiasing: true
    }

    ToolButton {
        id: settingsButton
        objectName: "settingsButton"
        opacity: 1

        font.pixelSize: Qt.application.font.pixelSize * 1.6
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.topMargin: Theme.windowMargin + 10
        anchors.leftMargin: Theme.windowMargin + 10

        onClicked: {
            if (stackView.depth > 1) {
                stackView.pop()
            } else {
                settingsDrawer.open()
            }
        }

        Icon {
            id: settingsImage
            width: 24
            height: 24
            // TODO move arrow left to toolbar top
            source: stackView.depth
                    > 1 ? "../resources/arrow-left.svg" : "../resources/gear-fill.svg"
            anchors.centerIn: settingsButton
        }
    }

    Column {
        id: col
        anchors.centerIn: parent
        anchors.topMargin: 24
        width: parent.width * 0.8

        BoldLabel {
            id: connectionState
            text: ""
            anchors.horizontalCenter: parent.horizontalCenter
            horizontalAlignment: Text.AlignHCenter
        }

        VerticalSpacer {
            id: spacerPreImg
            visible: false
            height: 40
        }

        Image {
            id: connectionImage
            height: 200
            source: "../resources/spy.gif"
            fillMode: Image.PreserveAspectFit
        }

        VerticalSpacer {
            id: spacerPostImg
            visible: false
            height: 35
        }

        MaterialButton {
            id: toggleVPN
            anchors.horizontalCenter: parent.horizontalCenter
            Layout.alignment: Qt.AlignBottom
            font.capitalization: Font.Capitalize
            spacing: 8

            onClicked: {
                if (vpn.state === "on") {
                    console.debug("should turn off")
                    backend.switchOff()
                } else if (vpn.state === "off") {
                    console.debug("should turn on")
                    backend.switchOn()
                } else {
                    console.debug("unknown state")
                }
            }


            /*
             XXX this hijacks click events, so better no pointing for now.
            MouseArea {
                anchors.fill: toggleVPN
                hoverEnabled: true
                cursorShape: !hoverEnabled ? Qt.ForbiddenCursor : Qt.PointingHandCursor
            }
            */
        }
    }
}