Newer
Older
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: appWidth
minimumWidth: appWidth
maximumWidth: appWidth
height: appHeight
minimumHeight: appHeight
maximumHeight: appHeight
// TODO can move properties to some state sub-item to unclutter
property bool isDonationService: false
property bool showDonationReminder: false
property var locationsModel: []
// TODO get from persistance
property var selectedGateway: "auto"
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"
}
source: "qrc:/poppins-bold.ttf"
}
FontLoader {
id: boldFontMonserrat
source: "qrc:/monserrat-bold.ttf"
FontLoader {
id: robotoFont
source: "qrc:/roboto.ttf"
}
FontLoader {
id: robotoBoldFont
source: "qrc:/roboto-bold.ttf"
}
id: loader
asynchronous: true
anchors.fill: parent
Loader {
id: themeLoader
source: loadTheme()
}
target: jsonModel
function onDataChanged() {
let j = jsonModel.getJson()
if (ctx.errors) {
console.debug("errors, setting root.error")
root.error = ctx.errors
} else {
root.error = ""
}
if (ctx.donateURL) {
if (isAutoLocation()) {
root.selectedGateway = "auto"
}
function getSortedLocations() {
let obj = ctx.locations
var arr = []
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
arr.push({
"key": prop,
"value": obj[prop]
})
}
}
arr.sort(function (a, b) {
return a.value - b.value
}).reverse()
return Array.from(arr, (k,_) => k.key);
}
function isAutoLocation() {
// FIXME there's something weird going on with newyork location...
// it gets marked as auto, which from europe is a bug.
let best = ctx.locationLabels[ctx.bestLocation]
if (best == undefined) {
return false
}
return (best[0] == ctx.currentLocation)
}
function bringToFront() {
// FIXME does not work properly, at least on linux
if (visibility == 3) {
showNormal()
} else {
show()
}
raise()
requestActivate()
}
var arr
if (Qt.platform.os == "windows") {
arr = flavor.split("\\")
} else {
arr = flavor.split("/")
}
var providerFlavor = arr[arr.length-1]
console.debug("flavor: " + providerFlavor)
if (providerFlavor.startsWith("riseup-vpn") || providerFlavor == "RiseupVPN") {
} else if (providerFlavor.startsWith("calyx-vpn") || providerFlavor == "CalyxVPN") {
return "themes/Calyx.qml"
} else {
// we should do a Default theme, with a fallback
// mechanism
console.debug("ERROR while initializing scene")
console.debug(msg)
}
Component.onCompleted: {
loader.source = "components/Splash.qml"
}
}