Skip to content
Snippets Groups Projects
Unverified Commit cae08421 authored by Kali Kaneko's avatar Kali Kaneko
Browse files

[ui] systray actions

parent 79d25833
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,19 @@ Labs.SystemTrayIcon {
enabled: false
}
Labs.MenuItem {
id: vpnSystrayToggle
text: getConnectionText()
enabled: isConnectionTextEnabled()
onTriggered: {
if (ctx.status == "off") {
backend.switchOn()
} else if (ctx.status == "on") {
backend.switchOff()
}
}
}
Labs.MenuSeparator {}
Labs.MenuItem {
......@@ -27,8 +40,59 @@ Labs.SystemTrayIcon {
Labs.MenuSeparator {}
Labs.MenuItem {
id: showAppItem
//: Part of the systray menu; show or hide the main app window
text: isVisible() ? qsTr("Hide") : qsTr("Show")
onTriggered: {
if (isVisible()) {
root.hide()
} else {
root.bringToFront()
}
}
}
Labs.MenuItem {
//: Part of the systray menu; quits que application
text: qsTr("Quit")
onTriggered: backend.quit()
}
}
function isVisible() {
return root.visibility != 0 && root.visibility != 3
}
function getConnectionText() {
if (!ctx) {
return ""
} else if (ctx.status == "off") {
// Not Turn on, because we will can later append "to <Location>"
if (ctx.locations && ctx.bestLocation) {
return qsTr("Connect to") + " " + getCanonicalLocation(ctx.bestLocation)
} else {
return qsTr("Connect")
}
} else if (ctx.status == "on") {
return qsTr("Disconnect")
}
return ""
}
function isConnectionTextEnabled() {
if (!ctx) {
return false
}
return ctx.status == "off" || ctx.status == "on"
}
// returns the composite of Location, CC
function getCanonicalLocation(label) {
try {
let loc = ctx.locationLabels[label]
return loc[0] + ", " + loc[1]
} catch(e) {
return "unknown"
}
}
}
......@@ -37,7 +37,9 @@ StateGroup {
PropertyChanges {
target: toggleVPN
enabled: false
text: ("...")
// XXX this is a fake cancel, won't do anything at this point. We need
// to queue this action for when the openvpn process becomes available.
text: ("Cancel")
}
PropertyChanges {
target: systray
......
......@@ -3,8 +3,6 @@
/*
TODO (ui rewrite)
See https://0xacab.org/leap/bitmask-vpn/-/issues/523
- [x] udp support
- [ ] minimize/hide from systray
- [ ] control actions from systray
- [ ] add gateway to systray
*/
......@@ -144,6 +142,17 @@ ApplicationWindow {
return Array.from(arr, (k,_) => k.key);
}
function bringToFront() {
// FIXME does not work properly, at least on linux
if (visibility == 3) {
showNormal()
} else {
show()
}
raise()
requestActivate()
}
onSceneGraphError: function (error, msg) {
console.debug("ERROR while initializing scene")
console.debug(msg)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment