Browse Source

qml: add server and proxy config dialogs

master
Sander van Grieken 3 years ago
parent
commit
9a72f98855
  1. 47
      electrum/gui/qml/components/NetworkStats.qml
  2. 2
      electrum/gui/qml/components/controls/NetworkStatusIndicator.qml
  3. 23
      electrum/gui/qml/components/controls/ProxyConfig.qml
  4. 6
      electrum/gui/qml/components/controls/ServerConfig.qml
  5. 14
      electrum/gui/qml/components/wizard/WCProxyConfig.qml

47
electrum/gui/qml/components/NetworkStats.qml

@ -1,13 +1,58 @@
import QtQuick 2.6 import QtQuick 2.6
import QtQuick.Layouts 1.0 import QtQuick.Layouts 1.0
import QtQuick.Controls 2.0 import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import QtQml 2.6
import "controls" import "controls"
Pane { Pane {
id: root
property string title: qsTr('Network') property string title: qsTr('Network')
property QtObject menu: Menu {
id: menu
MenuItem {
icon.color: 'transparent'
action: Action {
text: qsTr('Server Settings');
onTriggered: menu.openPage(sc_comp);
enabled: Daemon.currentWallet
icon.source: '../../icons/network.png'
}
}
MenuItem {
icon.color: 'transparent'
action: Action {
text: qsTr('Proxy Settings');
onTriggered: menu.openPage(pc_comp);
enabled: Daemon.currentWallet
icon.source: '../../icons/status_connected_proxy.png'
}
}
function openPage(comp) {
var dialog = comp.createObject(root)
dialog.open()
currentIndex = -1
}
}
Component {
id: sc_comp
ServerConfigDialog {
onClosed: destroy()
}
}
Component {
id: pc_comp
ProxyConfigDialog {
onClosed: destroy()
}
}
GridLayout { GridLayout {
columns: 2 columns: 2

2
electrum/gui/qml/components/controls/NetworkStatusIndicator.qml

@ -10,7 +10,7 @@ Image {
property bool lagging: connected && Network.isLagging property bool lagging: connected && Network.isLagging
property bool fork: connected && Network.chaintips > 1 property bool fork: connected && Network.chaintips > 1
property bool syncing: connected && Daemon.currentWallet && Daemon.currentWallet.synchronizing property bool syncing: connected && Daemon.currentWallet && Daemon.currentWallet.synchronizing
property bool proxy: connected && Network.proxy.mode property bool proxy: connected && 'mode' in Network.proxy && Network.proxy.mode
// ?: in order to keep this a binding.. // ?: in order to keep this a binding..
source: !connected source: !connected

23
electrum/gui/qml/components/controls/ProxyConfig.qml

@ -3,6 +3,8 @@ import QtQuick.Layouts 1.0
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
Item { Item {
id: pc
property alias proxy_enabled: proxy_enabled_cb.checked property alias proxy_enabled: proxy_enabled_cb.checked
property alias proxy_type: proxytype.currentIndex property alias proxy_type: proxytype.currentIndex
property alias proxy_address: address.text property alias proxy_address: address.text
@ -12,8 +14,29 @@ Item {
property var proxy_types: ['TOR', 'SOCKS5', 'SOCKS4'] property var proxy_types: ['TOR', 'SOCKS5', 'SOCKS4']
height: rootLayout.height
function toProxyDict() {
var p = {}
p['enabled'] = pc.proxy_enabled
if (pc.proxy_enabled) {
var type = pc.proxy_types[pc.proxy_type].toLowerCase()
if (type == 'tor')
type = 'socks5'
p['mode'] = type
p['host'] = pc.proxy_address
p['port'] = pc.proxy_port
p['user'] = pc.username
p['password'] = pc.password
}
return p
}
ColumnLayout { ColumnLayout {
id: rootLayout
width: parent.width width: parent.width
spacing: constants.paddingLarge
Label { Label {
text: qsTr('Proxy settings') text: qsTr('Proxy settings')

6
electrum/gui/qml/components/controls/ServerConfig.qml

@ -6,8 +6,13 @@ Item {
property alias auto_server: auto_server_cb.checked property alias auto_server: auto_server_cb.checked
property alias address: address_tf.text property alias address: address_tf.text
height: rootLayout.height
ColumnLayout { ColumnLayout {
id: rootLayout
width: parent.width width: parent.width
spacing: constants.paddingLarge
Label { Label {
text: qsTr('Server settings') text: qsTr('Server settings')
@ -31,6 +36,7 @@ Item {
TextField { TextField {
id: address_tf id: address_tf
enabled: !auto_server_cb.checked enabled: !auto_server_cb.checked
Layout.fillWidth: true
} }
} }
} }

14
electrum/gui/qml/components/wizard/WCProxyConfig.qml

@ -4,19 +4,7 @@ WizardComponent {
valid: true valid: true
onAccept: { onAccept: {
var p = {} wizard_data['proxy'] = pc.toProxyDict()
p['enabled'] = pc.proxy_enabled
if (pc.proxy_enabled) {
var type = pc.proxy_types[pc.proxy_type].toLowerCase()
if (type == 'tor')
type = 'socks5'
p['mode'] = type
p['host'] = pc.proxy_address
p['port'] = pc.proxy_port
p['user'] = pc.username
p['password'] = pc.password
}
wizard_data['proxy'] = p
} }
ProxyConfig { ProxyConfig {

Loading…
Cancel
Save