From c0dc1a9eaa07343b3d2de9f06c76a45fde1767c9 Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Thu, 21 Jul 2022 16:01:31 +0200 Subject: [PATCH] qml: separate proxy and server controls from wizardcontainer, so we can reuse them in network settings later --- .../qml/components/controls/ProxyConfig.qml | 85 ++++++++++++++++++ .../qml/components/controls/ServerConfig.qml | 37 ++++++++ .../qml/components/wizard/WCProxyConfig.qml | 88 +++---------------- .../qml/components/wizard/WCServerConfig.qml | 36 ++------ 4 files changed, 137 insertions(+), 109 deletions(-) create mode 100644 electrum/gui/qml/components/controls/ProxyConfig.qml create mode 100644 electrum/gui/qml/components/controls/ServerConfig.qml diff --git a/electrum/gui/qml/components/controls/ProxyConfig.qml b/electrum/gui/qml/components/controls/ProxyConfig.qml new file mode 100644 index 000000000..38b1a044f --- /dev/null +++ b/electrum/gui/qml/components/controls/ProxyConfig.qml @@ -0,0 +1,85 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.0 +import QtQuick.Controls 2.1 + +Item { + property alias proxy_enabled: proxy_enabled_cb.checked + property alias proxy_type: proxytype.currentIndex + property alias proxy_address: address.text + property alias proxy_port: port.text + property alias username: username_tf.text + property alias password: password_tf.text + + property var proxy_types: ['TOR', 'SOCKS5', 'SOCKS4'] + + ColumnLayout { + width: parent.width + + Label { + text: qsTr('Proxy settings') + } + + CheckBox { + id: proxy_enabled_cb + text: qsTr('Enable Proxy') + } + + ComboBox { + id: proxytype + enabled: proxy_enabled_cb.checked + model: proxy_types + onCurrentIndexChanged: { + if (currentIndex == 0) { + address.text = "127.0.0.1" + port.text = "9050" + } + } + } + + GridLayout { + columns: 4 + Layout.fillWidth: true + + Label { + text: qsTr("Address") + enabled: address.enabled + } + + TextField { + id: address + enabled: proxytype.enabled && proxytype.currentIndex > 0 + } + + Label { + text: qsTr("Port") + enabled: port.enabled + } + + TextField { + id: port + enabled: proxytype.enabled && proxytype.currentIndex > 0 + } + + Label { + text: qsTr("Username") + enabled: username_tf.enabled + } + + TextField { + id: username_tf + enabled: proxytype.enabled && proxytype.currentIndex > 0 + } + + Label { + text: qsTr("Password") + enabled: password_tf.enabled + } + + TextField { + id: password_tf + enabled: proxytype.enabled && proxytype.currentIndex > 0 + echoMode: TextInput.Password + } + } + } +} diff --git a/electrum/gui/qml/components/controls/ServerConfig.qml b/electrum/gui/qml/components/controls/ServerConfig.qml new file mode 100644 index 000000000..fde71089d --- /dev/null +++ b/electrum/gui/qml/components/controls/ServerConfig.qml @@ -0,0 +1,37 @@ +import QtQuick 2.6 +import QtQuick.Layouts 1.0 +import QtQuick.Controls 2.1 + +Item { + property alias auto_server: auto_server_cb.checked + property alias address: address_tf.text + + ColumnLayout { + width: parent.width + + Label { + text: qsTr('Server settings') + } + + CheckBox { + id: auto_server_cb + text: qsTr('Select server automatically') + checked: true + } + + GridLayout { + columns: 2 + Layout.fillWidth: true + + Label { + text: qsTr("Server") + enabled: address_tf.enabled + } + + TextField { + id: address_tf + enabled: !auto_server_cb.checked + } + } + } +} diff --git a/electrum/gui/qml/components/wizard/WCProxyConfig.qml b/electrum/gui/qml/components/wizard/WCProxyConfig.qml index bf1c62b77..0703c6f83 100644 --- a/electrum/gui/qml/components/wizard/WCProxyConfig.qml +++ b/electrum/gui/qml/components/wizard/WCProxyConfig.qml @@ -1,94 +1,26 @@ -import QtQuick.Layouts 1.0 -import QtQuick.Controls 2.1 +import "../controls" WizardComponent { valid: true onAccept: { var p = {} - p['enabled'] = proxy_enabled.checked - if (proxy_enabled.checked) { - var type = proxytype.currentValue.toLowerCase() + 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'] = address.text - p['port'] = port.text - p['user'] = username.text - p['password'] = password.text + p['host'] = pc.proxy_address + p['port'] = pc.proxy_port + p['user'] = pc.username + p['password'] = pc.password } wizard_data['proxy'] = p } - ColumnLayout { + ProxyConfig { + id: pc width: parent.width - - Label { - text: qsTr('Proxy settings') - } - - CheckBox { - id: proxy_enabled - text: qsTr('Enable Proxy') - } - - ComboBox { - id: proxytype - enabled: proxy_enabled.checked - model: ['TOR', 'SOCKS5', 'SOCKS4'] - onCurrentIndexChanged: { - if (currentIndex == 0) { - address.text = "127.0.0.1" - port.text = "9050" - } - } - } - - GridLayout { - columns: 4 - Layout.fillWidth: true - - Label { - text: qsTr("Address") - enabled: address.enabled - } - - TextField { - id: address - enabled: proxytype.enabled && proxytype.currentIndex > 0 - } - - Label { - text: qsTr("Port") - enabled: port.enabled - } - - TextField { - id: port - enabled: proxytype.enabled && proxytype.currentIndex > 0 - } - - Label { - text: qsTr("Username") - enabled: username.enabled - } - - TextField { - id: username - enabled: proxytype.enabled && proxytype.currentIndex > 0 - } - - Label { - text: qsTr("Password") - enabled: password.enabled - } - - TextField { - id: password - enabled: proxytype.enabled && proxytype.currentIndex > 0 - echoMode: TextInput.Password - } - } } - } diff --git a/electrum/gui/qml/components/wizard/WCServerConfig.qml b/electrum/gui/qml/components/wizard/WCServerConfig.qml index 8bad45136..b1a3afea5 100644 --- a/electrum/gui/qml/components/wizard/WCServerConfig.qml +++ b/electrum/gui/qml/components/wizard/WCServerConfig.qml @@ -1,42 +1,16 @@ -import QtQuick.Layouts 1.0 -import QtQuick.Controls 2.1 +import "../controls" WizardComponent { valid: true last: true onAccept: { - wizard_data['oneserver'] = !auto_server.checked - wizard_data['server'] = address.text + wizard_data['oneserver'] = !sc.auto_server + wizard_data['server'] = sc.address } - ColumnLayout { + ServerConfig { + id: sc width: parent.width - - Label { - text: qsTr('Server settings') - } - - CheckBox { - id: auto_server - text: qsTr('Select server automatically') - checked: true - } - - GridLayout { - columns: 2 - Layout.fillWidth: true - - Label { - text: qsTr("Server") - enabled: address.enabled - } - - TextField { - id: address - enabled: !auto_server.checked - } - } } - }