Skip to content
Snippets Groups Projects
main.qml 2.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • Kali Kaneko's avatar
    Kali Kaneko committed
    /*
     TODO (ui rewrite)
     - [x] add systray
     - [x] systray status
     - [x] splash screen
     - [ ] splash delay/transitions
     - [ ] nested states
     - [ ] splash init errors
     - [ ] font: monserrat
     - [ ] donation dialog
     - [ ] add gateway to systray
     - [ ] control actions from systray
     - [ ] minimize/hide from systray
     - [ ] parse ctx flags (need dialog, etc)
     - [ ] gateway selector
     - [ ] bridges
    */
    
    import QtQuick 2.0
    import QtQuick.Controls 2.4
    import QtQuick.Dialogs 1.2
    import QtQuick.Controls.Material 2.1
    import QtQuick.Layouts 1.14
    
    import "./components"
    
    ApplicationWindow {
    
        id: root
    
        visible: true
        width: 360
        height: 520
        minimumWidth: 300
        maximumWidth: 300
        minimumHeight: 500
        maximumHeight: 500
    
        title: ctx ? ctx.appName : "VPN"
        Material.accent: Material.Green
    
        property var ctx
    
        property var icons: {
            "off": "qrc:/assets/icon/png/white/vpn_off.png",
            "on": "qrc:/assets/icon/png/white/vpn_on.png",
            "wait": "qrc:/assets/icon/png/white/vpn_wait_0.png",
            "blocked": "qrc:/assets/icon/png/white/vpn_blocked.png"
        }
    
        Loader {
    	id: loader
    	asynchronous: true
    	anchors.fill: parent
        }
    
        Systray {
    	id: systray
        }
    
        Connections {
    	target: jsonModel
    	function onDataChanged() {
    	    ctx = JSON.parse(jsonModel.getJson())
                if (qmlDebug) {
                    console.debug(jsonModel.getJson())
                }
    
    	    // FIXME -- use nested state machines for all these cases.
    
    	    //gwSelector.model = Object.keys(ctx.locations)
    
    	    /*
    	    if (ctx.donateDialog == 'true') {
    		Logic.setNeedsDonate(true);
    	    }
    	    if (ctx.loginDialog == 'true') {
    		console.debug(jsonModel.getJson())
    		console.debug("DEBUG: should display login")
    		login.visible = true
    	    }
    	    if (ctx.loginOk == 'true') {
    		loginOk.visible = true
    	    }
    	    if (ctx.errors) {
    		login.visible = false
    		if (ctx.errors == "nohelpers") {
    		    showInitFailure(
    				qsTr("Could not find helpers. Please check your installation"))
    		} else if (ctx.errors == "nopolkit") {
    		    showInitFailure(qsTr("Could not find polkit agent."))
    		} else {
    		    showInitFailure()
    		}
    	    }
    	    if (ctx.donateURL) {
    		donateItem.visible = true
    	    }
    
    	    if (ctx.status == "on") {
    		gwNextConnectionText.visible = false
    		gwReconnectText.visible = false
    	    }
    	    */
    	}
        }
    
        onSceneGraphError: function(error, msg) {
            console.debug("ERROR while initializing scene")
            console.debug(msg)
        }
    
        Component.onCompleted: {
            loader.source = "components/Splash.qml"
        }
    }