qml: fix lifecycle issues with swap helper.
previously tied to Channels view, now dynamically created and parented to app
This commit is contained in:
@@ -110,8 +110,13 @@ Pane {
|
|||||||
Layout.preferredWidth: 1
|
Layout.preferredWidth: 1
|
||||||
text: qsTr('Swap');
|
text: qsTr('Swap');
|
||||||
visible: Daemon.currentWallet.lightningCanSend.satsInt > 0 || Daemon.currentWallet.lightningCanReceive.satInt > 0
|
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: {
|
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 })
|
var dialog = swapDialog.createObject(root, { swaphelper: swaphelper })
|
||||||
dialog.open()
|
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 {
|
Component {
|
||||||
id: swapDialog
|
id: swapDialog
|
||||||
SwapDialog {
|
SwapDialog {
|
||||||
|
|||||||
@@ -50,7 +50,9 @@ ElDialog {
|
|||||||
Image {
|
Image {
|
||||||
Layout.preferredWidth: constants.iconSizeSmall
|
Layout.preferredWidth: constants.iconSizeSmall
|
||||||
Layout.preferredHeight: 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
|
visible: swaphelper.valid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,7 +85,9 @@ ElDialog {
|
|||||||
Image {
|
Image {
|
||||||
Layout.preferredWidth: constants.iconSizeSmall
|
Layout.preferredWidth: constants.iconSizeSmall
|
||||||
Layout.preferredHeight: 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
|
visible: swaphelper.valid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +127,9 @@ ElDialog {
|
|||||||
color: Material.accentColor
|
color: Material.accentColor
|
||||||
}
|
}
|
||||||
Label {
|
Label {
|
||||||
text: '(' + swaphelper.serverfeeperc + ')'
|
text: swaphelper.serverfeeperc
|
||||||
|
? '(' + swaphelper.serverfeeperc + ')'
|
||||||
|
: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,15 +170,6 @@ ElDialog {
|
|||||||
if (activeFocus)
|
if (activeFocus)
|
||||||
swaphelper.sliderPos = value
|
swaphelper.sliderPos = value
|
||||||
}
|
}
|
||||||
Component.onCompleted: {
|
|
||||||
value = swaphelper.sliderPos
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: swaphelper
|
|
||||||
function onSliderPosChanged() {
|
|
||||||
swapslider.value = swaphelper.sliderPos
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InfoTextArea {
|
InfoTextArea {
|
||||||
@@ -190,7 +187,7 @@ ElDialog {
|
|||||||
Layout.columnSpan: 2
|
Layout.columnSpan: 2
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr('Swap')
|
text: qsTr('Swap')
|
||||||
icon.source: '../../icons/status_waiting.png'
|
icon.source: Qt.resolvedUrl('../../icons/update.png')
|
||||||
enabled: swaphelper.valid
|
enabled: swaphelper.valid
|
||||||
onClicked: swaphelper.executeSwap()
|
onClicked: swaphelper.executeSwap()
|
||||||
}
|
}
|
||||||
@@ -198,8 +195,16 @@ ElDialog {
|
|||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: swaphelper
|
target: swaphelper
|
||||||
function onSwapStarted() {
|
function onSliderPosChanged() {
|
||||||
|
swapslider.value = swaphelper.sliderPos
|
||||||
|
}
|
||||||
|
function onSwapSuccess() {
|
||||||
root.close()
|
root.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
swapslider.value = swaphelper.sliderPos
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ ElDialog {
|
|||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
|
|
||||||
|
iconSource: Qt.resolvedUrl('../../icons/update.png')
|
||||||
title: swaphelper.isReverse
|
title: swaphelper.isReverse
|
||||||
? qsTr('Reverse swap...')
|
? qsTr('Reverse swap...')
|
||||||
: qsTr('Swap...')
|
: qsTr('Swap...')
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import QtQuick.Controls.Material.impl 2.12
|
|||||||
import QtQml 2.6
|
import QtQml 2.6
|
||||||
import QtMultimedia 5.6
|
import QtMultimedia 5.6
|
||||||
|
|
||||||
|
import org.electrum 1.0
|
||||||
|
|
||||||
import "controls"
|
import "controls"
|
||||||
|
|
||||||
ApplicationWindow
|
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: {
|
Component.onCompleted: {
|
||||||
coverTimer.start()
|
coverTimer.start()
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class QESwapHelper(AuthMixin, QObject):
|
|||||||
_logger = get_logger(__name__)
|
_logger = get_logger(__name__)
|
||||||
|
|
||||||
confirm = pyqtSignal([str], arguments=['message'])
|
confirm = pyqtSignal([str], arguments=['message'])
|
||||||
|
error = pyqtSignal([str], arguments=['message'])
|
||||||
swapStarted = pyqtSignal()
|
swapStarted = pyqtSignal()
|
||||||
swapSuccess = pyqtSignal()
|
swapSuccess = pyqtSignal()
|
||||||
swapFailed = pyqtSignal([str], arguments=['message'])
|
swapFailed = pyqtSignal([str], arguments=['message'])
|
||||||
|
|||||||
Reference in New Issue
Block a user