Browse Source
depending on qeswaphelper.state TODO: we can now retrieve the pairs from the service asynchronously, which should eliminate the startup delay when showing the SwapDialogmaster
4 changed files with 52 additions and 166 deletions
@ -1,140 +0,0 @@
|
||||
import QtQuick 2.15 |
||||
import QtQuick.Layouts 1.0 |
||||
import QtQuick.Controls 2.14 |
||||
import QtQuick.Controls.Material 2.0 |
||||
|
||||
import org.electrum 1.0 |
||||
|
||||
import "controls" |
||||
|
||||
ElDialog { |
||||
id: dialog |
||||
|
||||
required property QtObject swaphelper |
||||
|
||||
width: parent.width |
||||
height: parent.height |
||||
resizeWithKeyboard: false |
||||
|
||||
iconSource: Qt.resolvedUrl('../../icons/update.png') |
||||
title: swaphelper.isReverse |
||||
? qsTr('Reverse swap...') |
||||
: qsTr('Swap...') |
||||
|
||||
Item { |
||||
id: s |
||||
state: '' |
||||
states: [ |
||||
State { |
||||
name: '' |
||||
}, |
||||
State { |
||||
name: 'success' |
||||
PropertyChanges { target: spinner; visible: false } |
||||
PropertyChanges { target: helpText; text: qsTr('Success') } |
||||
PropertyChanges { target: icon; source: '../../icons/confirmed.png' } |
||||
}, |
||||
State { |
||||
name: 'failed' |
||||
PropertyChanges { target: spinner; visible: false } |
||||
PropertyChanges { target: helpText; text: qsTr('Failed') } |
||||
PropertyChanges { target: errorText; visible: true } |
||||
PropertyChanges { target: icon; source: '../../icons/warning.png' } |
||||
} |
||||
] |
||||
transitions: [ |
||||
Transition { |
||||
from: '' |
||||
to: 'success' |
||||
PropertyAnimation { target: helpText; properties: 'text'; duration: 0} |
||||
NumberAnimation { target: icon; properties: 'opacity'; from: 0; to: 1; duration: 200 } |
||||
NumberAnimation { target: icon; properties: 'scale'; from: 0; to: 1; duration: 500 |
||||
easing.type: Easing.OutBack |
||||
easing.overshoot: 10 |
||||
} |
||||
}, |
||||
Transition { |
||||
from: '' |
||||
to: 'failed' |
||||
PropertyAnimation { target: helpText; properties: 'text'; duration: 0} |
||||
NumberAnimation { target: icon; properties: 'opacity'; from: 0; to: 1; duration: 500 } |
||||
} |
||||
] |
||||
} |
||||
|
||||
ColumnLayout { |
||||
id: content |
||||
anchors.centerIn: parent |
||||
width: parent.width |
||||
|
||||
Item { |
||||
Layout.alignment: Qt.AlignHCenter |
||||
Layout.preferredWidth: constants.iconSizeXXLarge |
||||
Layout.preferredHeight: constants.iconSizeXXLarge |
||||
|
||||
Item { |
||||
id: spinner |
||||
property real rot: 0 |
||||
RotationAnimation on rot { |
||||
duration: 2000 |
||||
loops: Animation.Infinite |
||||
from: 0 |
||||
to: 360 |
||||
running: spinner.visible |
||||
easing.type: Easing.InOutQuint |
||||
} |
||||
Image { |
||||
x: constants.iconSizeXLarge/2 * Math.cos(spinner.rot*2*Math.PI/360) |
||||
y: constants.iconSizeXLarge/2 * Math.sin(spinner.rot*2*Math.PI/360) |
||||
width: constants.iconSizeXLarge |
||||
height: constants.iconSizeXLarge |
||||
source: swaphelper.isReverse ? '../../icons/bitcoin.png' : '../../icons/lightning.png' |
||||
} |
||||
Image { |
||||
x: constants.iconSizeXLarge/2 * Math.cos(Math.PI + spinner.rot*2*Math.PI/360) |
||||
y: constants.iconSizeXLarge/2 * Math.sin(Math.PI + spinner.rot*2*Math.PI/360) |
||||
width: constants.iconSizeXLarge |
||||
height: constants.iconSizeXLarge |
||||
source: swaphelper.isReverse ? '../../icons/lightning.png' : '../../icons/bitcoin.png' |
||||
} |
||||
} |
||||
|
||||
Image { |
||||
id: icon |
||||
width: constants.iconSizeXXLarge |
||||
height: constants.iconSizeXXLarge |
||||
} |
||||
} |
||||
|
||||
Label { |
||||
id: helpText |
||||
Layout.alignment: Qt.AlignHCenter |
||||
text: qsTr('Performing swap...') |
||||
font.pixelSize: constants.fontSizeXXLarge |
||||
} |
||||
|
||||
Label { |
||||
id: errorText |
||||
Layout.preferredWidth: parent.width |
||||
Layout.alignment: Qt.AlignHCenter |
||||
horizontalAlignment: Text.AlignHCenter |
||||
wrapMode: Text.Wrap |
||||
font.pixelSize: constants.fontSizeLarge |
||||
} |
||||
} |
||||
|
||||
Connections { |
||||
target: swaphelper |
||||
function onSwapSuccess() { |
||||
console.log('swap succeeded!') |
||||
s.state = 'success' |
||||
} |
||||
function onSwapFailed(message) { |
||||
console.log('swap failed: ' + message) |
||||
s.state = 'failed' |
||||
if (message) |
||||
errorText.text = message |
||||
} |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue