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 property int loglevel_idx property var loglevels: [ i18n.tr("warning"), i18n.tr("info"), i18n.tr("debug"), i18n.tr("error") ] 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(); } } } } Column { id: defaultlogLevel anchors.top: serviceState.bottom width: parent.width leftPadding: units.gu(2) topPadding: units.gu(2) OptionSelector { id: loglevel text: i18n.tr("LogLevel") width: parent.width - units.gu(4) model: loglevels containerHeight: itemHeight * 6 onDelegateClicked: { loglevel_idx = index; saveConfig(); } } Label { text: " " height: units.gu(2) } ListItems.Divider { height: units.gu(.5) } } ListView { id: listView width: parent.width height: parent.height - bottomEdgeHint.height anchors.top: defaultlogLevel.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: item.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) { console.log('DEBUG: ' + JSON.stringify(result)); var defaults = result[0]; loglevel.selectedIndex = defaults.loglevel_idx; loglevel_idx = defaults.loglevel_idx; var data = result[1]; for (var i=0; i