Skip to content
Snippets Groups Projects
StatusBox.qml 3.26 KiB
Newer Older
  • Learn to ignore specific revisions
  • Kali Kaneko's avatar
    Kali Kaneko committed
    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
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    import "../themes/themes.js" as Theme
    
    Item {
        id: statusbox
        anchors.fill: parent
    
        VPNState {
            id: vpn
        }
    
    
        Rectangle {
            color: Theme.bgColor
            anchors.fill: parent
        }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
        Rectangle {
            id: statusBoxBackground
    
            color: Theme.fgColor
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            height: 300
            radius: 10
            antialiasing: true
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            anchors {
                fill: parent
                margins: 20
                bottomMargin: 30
            }
            border {
                color: Theme.accentOff
                width: 2
            }
    
    Kali Kaneko's avatar
    Kali Kaneko committed
        }
    
        ToolButton {
            id: settingsButton
            objectName: "settingsButton"
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            font.pixelSize: Qt.application.font.pixelSize * 1.2
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            opacity: 1
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            anchors {
                top: parent.top
                left: parent.left
                topMargin: Theme.windowMargin + 10
                leftMargin: Theme.windowMargin + 10
            }
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    
            onClicked: {
                if (stackView.depth > 1) {
                    stackView.pop()
                } else {
                    settingsDrawer.open()
                }
            }
    
            Icon {
                id: settingsImage
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                width: 16
                height: 16
                anchors.centerIn: settingsButton
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                source: stackView.depth
                        > 1 ? "../resources/arrow-left.svg" : "../resources/gear-fill.svg"
            }
        }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
        Rectangle {
            id: statusLabelWrapper
            height: 45
            anchors {
                top: statusBoxBackground.top
                topMargin: 40
                horizontalCenter: parent.horizontalCenter
            }
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            BoldLabel {
                id: connectionState
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                anchors.top: parent.top
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                anchors.horizontalCenter: parent.horizontalCenter
                horizontalAlignment: Text.AlignHCenter
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                text: ""
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            }
    
    Kali Kaneko's avatar
    Kali Kaneko committed
        }
    
        Column {
            id: col
            width: parent.width * 0.8
            anchors.horizontalCenter: parent.horizontalCenter
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    
            VerticalSpacer {
                id: spacerPreImg
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                visible: true
                height: 150
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            }
    
            Image {
                id: connectionImage
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                height: 160
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                source: "../resources/spy.gif"
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                anchors.horizontalCenter: parent.horizontalCenter
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                fillMode: Image.PreserveAspectFit
            }
    
            VerticalSpacer {
                id: spacerPostImg
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                visible: true
                height: 30
    
    Kali Kaneko's avatar
    Kali Kaneko committed
            }
    
            MaterialButton {
                id: toggleVPN
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                spacing: 8
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                anchors.horizontalCenter: parent.horizontalCenter
                Layout.alignment: Qt.AlignBottom
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    
                font {
                    capitalization: Font.Capitalize
                    family: lightFont.name
                    bold: false
                }
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    
                onClicked: {
                    if (vpn.state === "on") {
                        backend.switchOff()
                    } else if (vpn.state === "off") {
    
                        vpn.startingUI = true
    
    Kali Kaneko's avatar
    Kali Kaneko committed
                        backend.switchOn()
                    } else {
                        console.debug("unknown state")
                    }
                }
            }
        }
    }