diff options
Diffstat (limited to 'gui/main.qml')
-rw-r--r-- | gui/main.qml | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/gui/main.qml b/gui/main.qml new file mode 100644 index 0000000..16677a2 --- /dev/null +++ b/gui/main.qml @@ -0,0 +1,116 @@ +/* + 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" + } +} |