diff --git a/electrum/gui/qml/components/Channels.qml b/electrum/gui/qml/components/Channels.qml index 85b43ee7a..dfc2001ed 100644 --- a/electrum/gui/qml/components/Channels.qml +++ b/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 { diff --git a/electrum/gui/qml/components/SwapDialog.qml b/electrum/gui/qml/components/SwapDialog.qml index abebaa049..6239e6a06 100644 --- a/electrum/gui/qml/components/SwapDialog.qml +++ b/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 + } + } diff --git a/electrum/gui/qml/components/SwapProgressDialog.qml b/electrum/gui/qml/components/SwapProgressDialog.qml index 5cc9feea3..ec3434808 100644 --- a/electrum/gui/qml/components/SwapProgressDialog.qml +++ b/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...') diff --git a/electrum/gui/qml/components/main.qml b/electrum/gui/qml/components/main.qml index dd90b0918..47b9464e8 100644 --- a/electrum/gui/qml/components/main.qml +++ b/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() diff --git a/electrum/gui/qml/qeswaphelper.py b/electrum/gui/qml/qeswaphelper.py index 2924809d6..66e8e3b6e 100644 --- a/electrum/gui/qml/qeswaphelper.py +++ b/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'])