diff --git a/electrum/gui/qml/components/LightningPaymentDetails.qml b/electrum/gui/qml/components/LightningPaymentDetails.qml
index 31ea3bfda..2edbacd90 100644
--- a/electrum/gui/qml/components/LightningPaymentDetails.qml
+++ b/electrum/gui/qml/components/LightningPaymentDetails.qml
@@ -33,13 +33,13 @@ Pane {
text: qsTr('Lightning payment details')
}
- Label {
- text: qsTr('Status')
- color: Material.accentColor
- }
-
- Label {
- text: lnpaymentdetails.status
+ InfoTextArea {
+ Layout.columnSpan: 2
+ Layout.fillWidth: true
+ Layout.bottomMargin: constants.paddingLarge
+ visible: text
+ text: lnpaymentdetails.status ? qsTr('Paid') : ''
+ iconStyle: InfoTextArea.IconStyle.Done
}
Label {
diff --git a/electrum/gui/qml/components/NetworkOverview.qml b/electrum/gui/qml/components/NetworkOverview.qml
index 9d6bc4399..ecba3e68c 100644
--- a/electrum/gui/qml/components/NetworkOverview.qml
+++ b/electrum/gui/qml/components/NetworkOverview.qml
@@ -217,22 +217,6 @@ Pane {
text: Daemon.currentWallet.lightningNumPeers
}
- Heading {
- Layout.columnSpan: 2
- text: qsTr('Nostr')
- }
-
- Label {
- text: qsTr('Relays:')
- color: Material.accentColor
- }
-
- Label {
- Layout.fillWidth: true
- text: Config.nostrRelays.replace(/,/g, "\n")
- wrapMode: Text.Wrap
- }
-
Heading {
Layout.columnSpan: 2
text: qsTr('Proxy')
diff --git a/electrum/gui/qml/components/NostrConfigDialog.qml b/electrum/gui/qml/components/NostrConfigDialog.qml
index 3f754fa80..767b3c42f 100644
--- a/electrum/gui/qml/components/NostrConfigDialog.qml
+++ b/electrum/gui/qml/components/NostrConfigDialog.qml
@@ -51,19 +51,15 @@ ElDialog {
Layout.leftMargin: constants.paddingLarge
Layout.rightMargin: constants.paddingLarge
- RowLayout {
+ TextHighlightPane {
Layout.fillWidth: true
- TextHighlightPane {
- Layout.fillWidth: true
- Label {
- text: qsTr('Enter the list of Nostr relays')
- width: parent.width
- wrapMode: Text.Wrap
- }
- }
- HelpButton {
- heading: Config.shortDescFor('NOSTR_RELAYS')
- helptext: Config.longDescFor('NOSTR_RELAYS')
+ Label {
+ text: qsTr('Enter the list of Nostr relays') + '
' +
+ qsTr('Nostr relays are used to send and receive submarine swap offers.') +
+ ' ' + qsTr('For multisig wallets, nostr is also used to relay transactions to your co-signers.') +
+ ' ' + qsTr('Connections to nostr are only made when required, and ephemerally.')
+ width: parent.width
+ wrapMode: Text.Wrap
}
}
diff --git a/electrum/gui/qml/components/ReceiveDialog.qml b/electrum/gui/qml/components/ReceiveDialog.qml
index 45a94918c..19982d05f 100644
--- a/electrum/gui/qml/components/ReceiveDialog.qml
+++ b/electrum/gui/qml/components/ReceiveDialog.qml
@@ -12,23 +12,25 @@ ElDialog {
id: dialog
title: qsTr('Receive Payment')
+ iconSource: Qt.resolvedUrl('../../icons/tab_receive.png')
property string key
+ property bool isLightning: request.isLightning
property string _bolt11: request.bolt11
property string _bip21uri: request.bip21
property string _address: request.address
-
property bool _render_qr: false // delay qr rendering until dialog is shown
- property bool _ispaid: false
-
- iconSource: Qt.resolvedUrl('../../icons/tab_receive.png')
+ signal requestPaid
padding: 0
+ function getPaidTxid() {
+ return request.paidTxid
+ }
+
ColumnLayout {
- visible: !_ispaid
anchors.fill: parent
spacing: 0
@@ -40,7 +42,7 @@ ElDialog {
rightMargin: constants.paddingLarge
contentHeight: rootLayout.height
- clip:true
+ clip: true
interactive: height < contentHeight
ColumnLayout {
@@ -186,43 +188,12 @@ ElDialog {
}
}
- ColumnLayout {
- visible: _ispaid
- anchors.centerIn: parent
- states: [
- State {
- name: 'paid'
- when: _ispaid
- }
- ]
- transitions: [
- Transition {
- from: ''
- to: 'paid'
- NumberAnimation { target: paidIcon; properties: 'opacity'; from: 0; to: 1; duration: 200 }
- NumberAnimation { target: paidIcon; properties: 'scale'; from: 0; to: 1; duration: 500; easing.type: Easing.OutBack; easing.overshoot: 10 }
- }
- ]
- Image {
- id: paidIcon
- Layout.alignment: Qt.AlignHCenter
- Layout.preferredWidth: constants.iconSizeXXLarge
- Layout.preferredHeight: constants.iconSizeXXLarge
- source: '../../icons/confirmed.png'
- }
- Label {
- Layout.alignment: Qt.AlignHCenter
- text: qsTr('Paid!')
- font.pixelSize: constants.fontSizeXXLarge
- }
- }
-
RequestDetails {
id: request
wallet: Daemon.currentWallet
onStatusChanged: {
if (status == RequestDetails.Paid || status == RequestDetails.Unconfirmed) {
- _ispaid = true
+ requestPaid()
}
}
}
diff --git a/electrum/gui/qml/components/ServerConfigDialog.qml b/electrum/gui/qml/components/ServerConfigDialog.qml
index b9679546e..ec53ef412 100644
--- a/electrum/gui/qml/components/ServerConfigDialog.qml
+++ b/electrum/gui/qml/components/ServerConfigDialog.qml
@@ -42,10 +42,8 @@ ElDialog {
text: qsTr('Ok')
icon.source: '../../icons/confirmed.png'
onClicked: {
- Network.oneServer = serverconfig.auto_connect
- ? false
- : serverconfig.one_server
- Config.autoConnect = serverconfig.auto_connect
+ Network.oneServer = serverconfig.serverConnectMode == ServerConnectModeComboBox.Mode.Single
+ Config.autoConnect = serverconfig.serverConnectMode == ServerConnectModeComboBox.Mode.Autoconnect
Network.server = serverconfig.address
rootItem.close()
}
diff --git a/electrum/gui/qml/components/TxDetails.qml b/electrum/gui/qml/components/TxDetails.qml
index 12cb2d01a..42f462a2e 100644
--- a/electrum/gui/qml/components/TxDetails.qml
+++ b/electrum/gui/qml/components/TxDetails.qml
@@ -75,7 +75,7 @@ Pane {
: txdetails.isRemoved ? qsTr('This transaction has been replaced or removed and is no longer valid')
: txdetails.inMempool
? qsTr('This transaction is still unconfirmed.') +
- (txdetails.canBump || txdetails.canCpfp || txdetails.canCancel
+ (txdetails.canBump || txdetails.canCancel
? txdetails.canCancel
? '\n' + qsTr('You can bump its fee to speed up its confirmation, or cancel this transaction.')
: '\n' + qsTr('You can bump its fee to speed up its confirmation.')
diff --git a/electrum/gui/qml/components/WalletMainView.qml b/electrum/gui/qml/components/WalletMainView.qml
index 50d13c5b7..e2d7229ca 100644
--- a/electrum/gui/qml/components/WalletMainView.qml
+++ b/electrum/gui/qml/components/WalletMainView.qml
@@ -639,6 +639,15 @@ Item {
width: parent.width
height: parent.height
+ onRequestPaid: {
+ close()
+ if (isLightning) {
+ app.stack.push(Qt.resolvedUrl('LightningPaymentDetails.qml'), {'key': key})
+ } else {
+ let paidTxid = getPaidTxid()
+ app.stack.push(Qt.resolvedUrl('TxDetails.qml'), {'txid': paidTxid})
+ }
+ }
onClosed: destroy()
}
}
diff --git a/electrum/gui/qml/components/controls/ServerConfig.qml b/electrum/gui/qml/components/controls/ServerConfig.qml
index 46a4cbba2..47bd4e680 100644
--- a/electrum/gui/qml/components/controls/ServerConfig.qml
+++ b/electrum/gui/qml/components/controls/ServerConfig.qml
@@ -10,9 +10,8 @@ Item {
id: root
property bool showAutoselectServer: true
- property alias auto_connect: auto_server_cb.checked
property alias address: address_tf.text
- property alias one_server: one_server_cb.checked
+ property alias serverConnectMode: server_connect_mode_cb.currentValue
implicitHeight: rootLayout.height
@@ -23,12 +22,32 @@ Item {
height: parent.height
spacing: constants.paddingLarge
- CheckBox {
- id: auto_server_cb
- visible: showAutoselectServer
- text: Config.shortDescFor('NETWORK_AUTO_CONNECT')
- checked: !showAutoselectServer
- enabled: !one_server_cb.checked
+
+ RowLayout {
+ Layout.fillWidth: true
+
+ ServerConnectModeComboBox {
+ id: server_connect_mode_cb
+ }
+
+ Item {
+ Layout.fillWidth: true
+ Layout.preferredHeight: 1
+ }
+
+ HelpButton {
+ Layout.alignment: Qt.AlignRight
+ heading: qsTr('Connection mode')+':'
+ helptext: Config.getTranslatedMessage('MSG_CONNECTMODE_SERVER_HELP') + '
' +
+ Config.getTranslatedMessage('MSG_CONNECTMODE_NODES_HELP') + '