Browse Source

qml: fix lifecycle issues with swap helper.

previously tied to Channels view, now dynamically created and parented to app
master
Sander van Grieken 3 years ago
parent
commit
15d73daf8d
  1. 27
      electrum/gui/qml/components/Channels.qml
  2. 33
      electrum/gui/qml/components/SwapDialog.qml
  3. 1
      electrum/gui/qml/components/SwapProgressDialog.qml
  4. 26
      electrum/gui/qml/components/main.qml
  5. 1
      electrum/gui/qml/qeswaphelper.py

27
electrum/gui/qml/components/Channels.qml

@ -110,8 +110,13 @@ Pane {
Layout.preferredWidth: 1
text: qsTr('Swap');
visible: Daemon.currentWallet.lightningCanSend.satsInt > 0 || Daemon.currentWallet.lightningCanReceive.satInt > 0
icon.source: '../../icons/status_waiting.png'
icon.source: Qt.resolvedUrl('../../icons/update.png')
onClicked: {
var swaphelper = app.swaphelper.createObject(app)
swaphelper.swapStarted.connect(function() {
var dialog = swapProgressDialog.createObject(app, { swaphelper: swaphelper })
dialog.open()
})
var dialog = swapDialog.createObject(root, { swaphelper: swaphelper })
dialog.open()
}
@ -141,26 +146,6 @@ Pane {
}
SwapHelper {
id: swaphelper
wallet: Daemon.currentWallet
onConfirm: {
var dialog = app.messageDialog.createObject(app, {text: message, yesno: true})
dialog.yesClicked.connect(function() {
dialog.close()
swaphelper.executeSwap(true)
})
dialog.open()
}
onAuthRequired: {
app.handleAuthRequired(swaphelper, method)
}
onSwapStarted: {
var dialog = swapProgressDialog.createObject(app, { swaphelper: swaphelper })
dialog.open()
}
}
Component {
id: swapDialog
SwapDialog {

33
electrum/gui/qml/components/SwapDialog.qml

@ -50,7 +50,9 @@ ElDialog {
Image {
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall
source: swaphelper.isReverse ? '../../icons/lightning.png' : '../../icons/bitcoin.png'
source: swaphelper.isReverse
? '../../icons/lightning.png'
: '../../icons/bitcoin.png'
visible: swaphelper.valid
}
}
@ -83,7 +85,9 @@ ElDialog {
Image {
Layout.preferredWidth: constants.iconSizeSmall
Layout.preferredHeight: constants.iconSizeSmall
source: swaphelper.isReverse ? '../../icons/bitcoin.png' : '../../icons/lightning.png'
source: swaphelper.isReverse
? '../../icons/bitcoin.png'
: '../../icons/lightning.png'
visible: swaphelper.valid
}
}
@ -123,7 +127,9 @@ ElDialog {
color: Material.accentColor
}
Label {
text: '(' + swaphelper.serverfeeperc + ')'
text: swaphelper.serverfeeperc
? '(' + swaphelper.serverfeeperc + ')'
: ''
}
}
@ -164,15 +170,6 @@ ElDialog {
if (activeFocus)
swaphelper.sliderPos = value
}
Component.onCompleted: {
value = swaphelper.sliderPos
}
Connections {
target: swaphelper
function onSliderPosChanged() {
swapslider.value = swaphelper.sliderPos
}
}
}
InfoTextArea {
@ -190,7 +187,7 @@ ElDialog {
Layout.columnSpan: 2
Layout.fillWidth: true
text: qsTr('Swap')
icon.source: '../../icons/status_waiting.png'
icon.source: Qt.resolvedUrl('../../icons/update.png')
enabled: swaphelper.valid
onClicked: swaphelper.executeSwap()
}
@ -198,8 +195,16 @@ ElDialog {
Connections {
target: swaphelper
function onSwapStarted() {
function onSliderPosChanged() {
swapslider.value = swaphelper.sliderPos
}
function onSwapSuccess() {
root.close()
}
}
Component.onCompleted: {
swapslider.value = swaphelper.sliderPos
}
}

1
electrum/gui/qml/components/SwapProgressDialog.qml

@ -15,6 +15,7 @@ ElDialog {
width: parent.width
height: parent.height
iconSource: Qt.resolvedUrl('../../icons/update.png')
title: swaphelper.isReverse
? qsTr('Reverse swap...')
: qsTr('Swap...')

26
electrum/gui/qml/components/main.qml

@ -7,6 +7,8 @@ import QtQuick.Controls.Material.impl 2.12
import QtQml 2.6
import QtMultimedia 5.6
import org.electrum 1.0
import "controls"
ApplicationWindow
@ -274,6 +276,30 @@ ApplicationWindow
}
}
property alias swaphelper: _swaphelper
Component {
id: _swaphelper
SwapHelper {
id: __swaphelper
wallet: Daemon.currentWallet
onConfirm: {
var dialog = app.messageDialog.createObject(app, {text: message, yesno: true})
dialog.yesClicked.connect(function() {
dialog.close()
__swaphelper.executeSwap(true)
})
dialog.open()
}
onAuthRequired: {
app.handleAuthRequired(__swaphelper, method)
}
onError: {
var dialog = app.messageDialog.createObject(app, { text: message })
dialog.open()
}
}
}
Component.onCompleted: {
coverTimer.start()

1
electrum/gui/qml/qeswaphelper.py

@ -19,6 +19,7 @@ class QESwapHelper(AuthMixin, QObject):
_logger = get_logger(__name__)
confirm = pyqtSignal([str], arguments=['message'])
error = pyqtSignal([str], arguments=['message'])
swapStarted = pyqtSignal()
swapSuccess = pyqtSignal()
swapFailed = pyqtSignal([str], arguments=['message'])

Loading…
Cancel
Save