201 lines
5.3 KiB
QML
201 lines
5.3 KiB
QML
import QtQuick 2.7
|
|
import QtQuick.Layouts 1.3
|
|
import Ubuntu.Components 1.3
|
|
import Ubuntu.Components.ListItems 1.3 as ListItems
|
|
import io.thp.pyotherside 1.3
|
|
|
|
import "Components"
|
|
|
|
Page {
|
|
id: settingsPage
|
|
|
|
property bool is_running: false
|
|
property bool upstart: false
|
|
property string status_msg
|
|
|
|
header: PageHeader {
|
|
id: header
|
|
title: i18n.tr('Pantalaimon UT')
|
|
|
|
trailingActionBar.actions: [
|
|
Action {
|
|
iconName: 'info'
|
|
text: i18n.tr('About')
|
|
onTriggered: {
|
|
pageStack.push(Qt.resolvedUrl("AboutPage.qml"));
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
ListItem {
|
|
id: upstartState
|
|
anchors.top: header.bottom
|
|
width: parent.width
|
|
|
|
ListItems.Standard {
|
|
anchors.fill: parent
|
|
text: upstart ? i18n.tr("Service start enabled") : i18n.tr("Service start disabled")
|
|
control: Switch {
|
|
checked: upstart
|
|
onClicked: {
|
|
if (checked) {
|
|
py.call('service.add', [], function(result) {});
|
|
} else {
|
|
py.call('service.remove', [], function(result) {});
|
|
}
|
|
get_status();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ListItem {
|
|
id: serviceState
|
|
anchors.top: upstartState.bottom
|
|
width: parent.width
|
|
|
|
ListItems.Standard {
|
|
anchors.fill: parent
|
|
text: status_msg
|
|
control: Switch {
|
|
enabled: upstart
|
|
checked: is_running
|
|
onClicked: {
|
|
if (checked) {
|
|
py.call('service.start', [], function(result) {});
|
|
} else {
|
|
py.call('service.stop', [], function(result) {});
|
|
}
|
|
get_status();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ListView {
|
|
id: listView
|
|
width: parent.width
|
|
height: parent.height - bottomEdgeHint.height
|
|
anchors.top: serviceState.bottom
|
|
visible: (listView.count !== 0)
|
|
model: ListModel {
|
|
id: listModel
|
|
}
|
|
clip: true
|
|
|
|
delegate: ListItem {
|
|
ListItems.Standard {
|
|
anchors.fill: parent
|
|
text: name
|
|
progression: true
|
|
onClicked: {
|
|
var item = listModel.get(index);
|
|
pageStack.push(editConfigPage, {
|
|
idx: index,
|
|
instance: item.name,
|
|
homeserver: item.homeserver,
|
|
listenport: item.listenport,
|
|
proxy: item.proxy,
|
|
ssl: ssl
|
|
});
|
|
}
|
|
}
|
|
|
|
leadingActions: ListItemActions {
|
|
actions: [
|
|
Action {
|
|
iconName: "delete"
|
|
text: i18n.tr("Delete homeserver")
|
|
onTriggered: {
|
|
console.log("debug: delete " + index);
|
|
listModel.remove(index);
|
|
saveConfig();
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
visible: (listView.count === 0)
|
|
// color: "lightgrey"
|
|
anchors.fill: parent
|
|
|
|
Label {
|
|
text: i18n.tr("No homeservers")
|
|
fontSize: "x-large"
|
|
anchors.centerIn: parent
|
|
}
|
|
}
|
|
|
|
Python {
|
|
id: py
|
|
|
|
Component.onCompleted: {
|
|
addImportPath(Qt.resolvedUrl('../src/'));
|
|
|
|
importModule('config', function() {
|
|
py.call('config.load', [], function(result) {
|
|
for (var i=0; i<result.length; i++) {
|
|
listModel.append(result[i])
|
|
}
|
|
});
|
|
console.log("debug: python config loaded...");
|
|
});
|
|
|
|
importModule('service', function() {
|
|
console.log("debug: python service loaded...");
|
|
get_status();
|
|
});
|
|
|
|
}
|
|
}
|
|
|
|
function saveConfig() {
|
|
var lmdata = []
|
|
for (var i = 0; i < listModel.count; ++i) {
|
|
lmdata.push(listModel.get(i));
|
|
}
|
|
py.call("config.save", [JSON.stringify(lmdata)], function(result) {});
|
|
}
|
|
|
|
function get_status() {
|
|
py.call("service.check_upstart", [], function(result) {
|
|
upstart = result;
|
|
});
|
|
py.call("service.status", [], function(result) {
|
|
is_running = result[0];
|
|
status_msg = result[1];
|
|
});
|
|
}
|
|
|
|
BottomEdge {
|
|
id: bottomEdge
|
|
height: parent.height
|
|
|
|
hint {
|
|
id: bottomEdgeHint
|
|
text: i18n.tr("Add Homeserver")
|
|
iconName: "add"
|
|
status: BottomEdgeHint.Locked
|
|
onStatusChanged: if (status === BottomEdgeHint.Inactive) bottomEdge.hint.status = BottomEdgeHint.Locked
|
|
}
|
|
|
|
contentComponent: EditServerPage {
|
|
id: bottomEdgeComponent
|
|
|
|
onSave: saveConfig()
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: editConfigPage
|
|
|
|
EditServerPage {
|
|
editmode: true
|
|
onSave: saveConfig()
|
|
}
|
|
}
|
|
}
|