198 lines
5.2 KiB
QML
198 lines
5.2 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')
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
|
||
|
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);
|
||
|
console.log(item);
|
||
|
pageStack.push(editConfigPage, {
|
||
|
idx: index,
|
||
|
instance: item.name,
|
||
|
homeserver: item.homeserver,
|
||
|
listenport: item.listenport
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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()
|
||
|
}
|
||
|
}
|
||
|
}
|