summaryrefslogtreecommitdiff
path: root/gui/qml
diff options
context:
space:
mode:
Diffstat (limited to 'gui/qml')
-rw-r--r--gui/qml/VpnState.qml184
-rw-r--r--gui/qml/main.qml93
2 files changed, 200 insertions, 77 deletions
diff --git a/gui/qml/VpnState.qml b/gui/qml/VpnState.qml
index ea2a3b1..ffad207 100644
--- a/gui/qml/VpnState.qml
+++ b/gui/qml/VpnState.qml
@@ -6,59 +6,171 @@ StateGroup {
state: ctx ? ctx.status : ""
states: [
- State { name: "initializing" },
+ State {
+ name: "initializing"
+ },
State {
name: "off"
- PropertyChanges { target: systray; tooltip: toHuman("off"); icon.source: icons["off"] }
- PropertyChanges { target: statusItem; text: toHuman("off") }
- PropertyChanges { target: mainStatus; text: toHuman("off") }
- PropertyChanges { target: mainCurrentGateway; text: "" }
- PropertyChanges { target: mainOnBtn; visible: true }
- PropertyChanges { target: mainOffBtn; visible: false }
- PropertyChanges { target: gwMarker; color: "red"}
+ PropertyChanges {
+ target: systray
+ tooltip: toHuman("off")
+ icon.source: icons["off"]
+ }
+ PropertyChanges {
+ target: statusItem
+ text: toHuman("off")
+ }
+ PropertyChanges {
+ target: mainStatus
+ text: toHuman("off")
+ }
+ PropertyChanges {
+ target: mainCurrentGateway
+ text: ""
+ }
+ PropertyChanges {
+ target: mainOnBtn
+ visible: true
+ }
+ PropertyChanges {
+ target: mainOffBtn
+ visible: false
+ }
+ PropertyChanges {
+ target: gwMarker
+ color: "red"
+ }
},
State {
name: "on"
StateChangeScript {
script: displayGatewayMarker()
}
- PropertyChanges { target: systray; tooltip: toHuman("on"); icon.source: icons["on"] }
- PropertyChanges { target: statusItem; text: toHumanWithLocation("on") }
- PropertyChanges { target: mainStatus; text: toHuman("on") }
- PropertyChanges { target: mainCurrentGateway; text: qsTr("Connected to ") + ctx.currentGateway }
- PropertyChanges { target: mainOnBtn; visible: false }
- PropertyChanges { target: mainOffBtn; visible: true }
- PropertyChanges { target: gwMarker; color: "green"}
+ PropertyChanges {
+ target: systray
+ tooltip: toHuman("on")
+ icon.source: icons["on"]
+ }
+ PropertyChanges {
+ target: statusItem
+ text: toHumanWithLocation("on")
+ }
+ PropertyChanges {
+ target: mainStatus
+ text: toHuman("on")
+ }
+ PropertyChanges {
+ target: mainCurrentGateway
+ text: qsTr("Connected to ") + ctx.currentGateway
+ }
+ PropertyChanges {
+ target: mainOnBtn
+ visible: false
+ }
+ PropertyChanges {
+ target: mainOffBtn
+ visible: true
+ }
+ PropertyChanges {
+ target: gwMarker
+ color: "green"
+ }
},
State {
name: "starting"
- PropertyChanges { target: systray; tooltip: toHuman("connecting"); icon.source: icons["wait"] }
- PropertyChanges { target: statusItem; text: toHumanWithLocation("connecting") }
- PropertyChanges { target: mainStatus; text: qsTr("Connecting...") }
- PropertyChanges { target: mainCurrentGateway; text: "" }
- PropertyChanges { target: mainOnBtn; visible: false }
- PropertyChanges { target: mainOffBtn; visible: true }
- PropertyChanges { target: gwMarker; color: "orange"}
+ PropertyChanges {
+ target: systray
+ tooltip: toHuman("connecting")
+ icon.source: icons["wait"]
+ }
+ PropertyChanges {
+ target: statusItem
+ text: toHumanWithLocation("connecting")
+ }
+ PropertyChanges {
+ target: mainStatus
+ text: qsTr("Connecting...")
+ }
+ PropertyChanges {
+ target: mainCurrentGateway
+ text: ""
+ }
+ PropertyChanges {
+ target: mainOnBtn
+ visible: false
+ }
+ PropertyChanges {
+ target: mainOffBtn
+ visible: true
+ }
+ PropertyChanges {
+ target: gwMarker
+ color: "orange"
+ }
},
State {
name: "stopping"
- PropertyChanges { target: systray; tooltip: toHuman("stopping"); icon.source: icons["wait"] }
- PropertyChanges { target: statusItem; text: toHuman("stopping") }
- PropertyChanges { target: mainStatus; text: toHuman("stopping") }
- PropertyChanges { target: mainCurrentGateway; text: "" }
- PropertyChanges { target: mainOnBtn; visible: true }
- PropertyChanges { target: mainOffBtn; visible: false }
- PropertyChanges { target: gwMarker; color: "orange"}
+ PropertyChanges {
+ target: systray
+ tooltip: toHuman("stopping")
+ icon.source: icons["wait"]
+ }
+ PropertyChanges {
+ target: statusItem
+ text: toHuman("stopping")
+ }
+ PropertyChanges {
+ target: mainStatus
+ text: toHuman("stopping")
+ }
+ PropertyChanges {
+ target: mainCurrentGateway
+ text: ""
+ }
+ PropertyChanges {
+ target: mainOnBtn
+ visible: true
+ }
+ PropertyChanges {
+ target: mainOffBtn
+ visible: false
+ }
+ PropertyChanges {
+ target: gwMarker
+ color: "orange"
+ }
},
State {
name: "failed"
- PropertyChanges { target: systray; tooltip: toHuman("failed"); icon.source: icons["wait"] }
- PropertyChanges { target: statusItem; text: toHuman("failed") }
- PropertyChanges { target: mainStatus; text: toHuman("failed") }
- PropertyChanges { target: mainCurrentGateway; text: "" }
- PropertyChanges { target: mainOnBtn; visible: true }
- PropertyChanges { target: mainOffBtn; visible: false }
- PropertyChanges { target: gwMarker; color: "red"}
+ PropertyChanges {
+ target: systray
+ tooltip: toHuman("failed")
+ icon.source: icons["wait"]
+ }
+ PropertyChanges {
+ target: statusItem
+ text: toHuman("failed")
+ }
+ PropertyChanges {
+ target: mainStatus
+ text: toHuman("failed")
+ }
+ PropertyChanges {
+ target: mainCurrentGateway
+ text: ""
+ }
+ PropertyChanges {
+ target: mainOnBtn
+ visible: true
+ }
+ PropertyChanges {
+ target: mainOffBtn
+ visible: false
+ }
+ PropertyChanges {
+ target: gwMarker
+ color: "red"
+ }
}
]
}
diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index bbc3f69..5401b97 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -18,10 +18,10 @@ ApplicationWindow {
minimumWidth: 300
maximumHeight: 600
minimumHeight: 600
- // TODO get a nice background color
flags: Qt.WindowsStaysOnTopHint | Qt.Popup
+ // TODO get a nice background color
property var ctx
property var loginDone
property var allowEmptyPass
@@ -42,14 +42,14 @@ ApplicationWindow {
ColumnLayout {
Layout.alignment: Qt.AlignHCenter
- Text{
+ Text {
id: mainStatus
text: "off"
font.pixelSize: 26
Layout.alignment: Text.AlignHCenter
}
- Text{
+ Text {
id: mainCurrentGateway
text: ""
font.pixelSize: 20
@@ -79,8 +79,8 @@ ApplicationWindow {
editable: false
model: [qsTr("Automatic")]
onActivated: {
- console.debug("Selected gateway:", currentText);
- backend.useGateway(currentText.toString());
+ console.debug("Selected gateway:", currentText)
+ backend.useGateway(currentText.toString())
}
}
}
@@ -110,18 +110,31 @@ ApplicationWindow {
color: "red"
z: worldMap.z + 1
}
-
}
}
-
function displayGatewayMarker() {
let coords = {
- 'paris': {'x': 48, 'y': 2},
- 'miami': {'x': 25.7 , 'y': -80.2 },
- 'amsterdam': {'x': 52.4, 'y': 4.9 },
- 'montreal': {'x': 45.3, 'y': -73.4 },
- 'seattle': {'x': 47.4, 'y': -122.2 },
+ "paris": {
+ "x": 48,
+ "y": 2
+ },
+ "miami": {
+ "x": 25.7,
+ "y": -80.2
+ },
+ "amsterdam": {
+ "x": 52.4,
+ "y": 4.9
+ },
+ "montreal": {
+ "x": 45.3,
+ "y": -73.4
+ },
+ "seattle": {
+ "x": 47.4,
+ "y": -122.2
+ }
}
let city = ctx.currentGateway.split('-')[0]
let coord = coords[city]
@@ -130,16 +143,16 @@ ApplicationWindow {
// our map, and this offset doesn't work with bigg-ish sizes. But good
// enough for a proof of concept - if we avoid resizing the window.
let xOffset = -1 * 0.10 * worldMap.width
- let p = Maps.projectAbsolute(coord.x, coord.y, worldMap.width, 1, xOffset)
+ let p = Maps.projectAbsolute(coord.x, coord.y, worldMap.width,
+ 1, xOffset)
gwMarker.x = p.x
gwMarker.y = p.y
}
-
Connections {
target: jsonModel
onDataChanged: {
- ctx = JSON.parse(jsonModel.getJson());
+ ctx = JSON.parse(jsonModel.getJson())
gwSelector.model = Object.keys(ctx.gateways)
if (ctx.donateDialog == 'true') {
@@ -220,9 +233,8 @@ ApplicationWindow {
allowEmptyPass = shouldAllowEmptyPass()
/* TODO get appVisible flag from backend */
- app.visible = true;
- show();
- hide();
+ app.visible = true
+ app.raise()
}
function toHuman(st) {
@@ -247,24 +259,26 @@ ApplicationWindow {
}
function toHumanWithLocation(st) {
- switch(st) {
- case "off":
- //: %1 -> application name
- return qsTr("%1 off").arg(ctx.appName);
- case "on":
- //: %1 -> application name
- //: %2 -> current gateway
- return qsTr("%1 on - %2").arg(ctx.appName).arg(ctx.currentGateway);
- case "connecting":
- //: %1 -> application name
- //: %2 -> current gateway
- return qsTr("Connecting to %1 - %2").arg(ctx.appName).arg(ctx.currentGateway);
- case "stopping":
- //: %1 -> application name
- return qsTr("Stopping %1").arg(ctx.appName);
- case "failed":
- //: %1 -> application name
- return qsTr("%1 blocking internet").arg(ctx.appName); // TODO failed is not handed yet
+ switch (st) {
+ case "off":
+ //: %1 -> application name
+ return qsTr("%1 off").arg(ctx.appName)
+ case "on":
+ //: %1 -> application name
+ //: %2 -> current gateway
+ return qsTr("%1 on - %2").arg(ctx.appName).arg(ctx.currentGateway)
+ case "connecting":
+ //: %1 -> application name
+ //: %2 -> current gateway
+ return qsTr("Connecting to %1 - %2").arg(ctx.appName).arg(
+ ctx.currentGateway)
+ case "stopping":
+ //: %1 -> application name
+ return qsTr("Stopping %1").arg(ctx.appName)
+ case "failed":
+ //: %1 -> application name
+ return qsTr("%1 blocking internet").arg(
+ ctx.appName) // TODO failed is not handed yet
}
}
@@ -279,7 +293,6 @@ ApplicationWindow {
id: vpn
}
- SystemTrayIcon {
LabsPlatform.SystemTrayIcon {
id: systray
@@ -298,13 +311,12 @@ ApplicationWindow {
target: systray
onActivatedSignal: {
if (Qt.platform.os === "windows" || desktop === "LXQt") {
- console.debug("open systray menu");
- systrayMenu.open();
+ console.debug("open systray menu")
+ systrayMenu.open()
}
}
}
-
LabsPlatform.MenuItem {
id: statusItem
text: qsTr("Checking status…")
@@ -388,7 +400,6 @@ ApplicationWindow {
}
}
-
Component.onCompleted: {
icon.source = icons["off"]
tooltip = qsTr("Checking status…")