1
0

qml: enable first wizard page of multisig

This commit is contained in:
Sander van Grieken
2022-11-07 14:07:00 +01:00
parent 5fd8b63091
commit b8a8c848c7
5 changed files with 108 additions and 1 deletions

View File

@@ -39,6 +39,9 @@ Item {
property color colorPiechartFrozen: 'gray'
property color colorPiechartLightning: 'orange' //Qt.darker(Material.accentColor, 1.20)
property color colorPiechartParticipant: 'gray'
property color colorPiechartSignature: 'yellow'
function colorAlpha(baseColor, alpha) {
return Qt.rgba(baseColor.r, baseColor.g, baseColor.b, alpha)
}

View File

@@ -0,0 +1,100 @@
import QtQuick 2.6
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.1
import org.electrum 1.0
import "../controls"
WizardComponent {
id: root
valid: true
property int participants: 2
property int signatures: 2
onParticipantsChanged: {
if (participants < signatures)
signatures = participants
piechart.updateSlices()
}
onSignaturesChanged: {
piechart.updateSlices()
}
function apply() {
wizard_data['multisig_participants'] = participants
wizard_data['multisig_signatures'] = signatures
}
ColumnLayout {
width: parent.width
Label { text: qsTr('Multisig wallet') }
InfoTextArea {
Layout.preferredWidth: parent.width
text: qsTr('Choose the number of participants, and the number of signatures needed to unlock funds in your wallet.')
}
Piechart {
id: piechart
Layout.preferredWidth: parent.width * 1/2
Layout.alignment: Qt.AlignHCenter
Layout.preferredHeight: 200 // TODO
showLegend: false
innerOffset: 3
function updateSlices() {
var s = []
for (let i=0; i < participants; i++) {
var item = {
v: (1/participants),
color: i < signatures ? constants.colorPiechartSignature : constants.colorPiechartParticipant
}
s.push(item)
}
piechart.slices = s
}
}
Label {
text: qsTr('Number of cosigners: %1').arg(participants)
}
Slider {
id: participants_slider
Layout.preferredWidth: parent.width * 4/5
Layout.alignment: Qt.AlignHCenter
snapMode: Slider.SnapAlways
stepSize: 1
from: 2
to: 15
onValueChanged: {
if (activeFocus)
participants = value
}
}
Label {
text: qsTr('Number of signatures: %1').arg(signatures)
}
Slider {
id: signatures_slider
Layout.preferredWidth: parent.width * 4/5
Layout.alignment: Qt.AlignHCenter
snapMode: Slider.SnapAlways
stepSize: 1
from: 1
to: participants
onValueChanged: {
if (activeFocus)
signatures = value
}
}
}
Component.onCompleted: piechart.updateSlices()
}

View File

@@ -32,7 +32,6 @@ WizardComponent {
text: qsTr('Wallet with two-factor authentication')
}
RadioButton {
enabled: false
ButtonGroup.group: wallettypegroup
property string wallettype: 'multisig'
text: qsTr('Multi-signature wallet')

View File

@@ -59,6 +59,7 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
'have_seed': { 'gui': 'WCHaveSeed' },
'bip39_refine': { 'gui': 'WCBIP39Refine' },
'have_master_key': { 'gui': 'WCHaveMasterKey' },
'multisig': { 'gui': 'WCMultisig' },
'imported': { 'gui': 'WCImport' },
'wallet_password': { 'gui': 'WCWalletPassword' }
})

View File

@@ -163,6 +163,9 @@ class NewWalletWizard(AbstractWizard):
'next': 'wallet_password',
'last': self.last_if_single_password
},
'multisig': {
'next': 'first_cosigner'
},
'imported': {
'next': 'wallet_password',
'last': self.last_if_single_password
@@ -189,6 +192,7 @@ class NewWalletWizard(AbstractWizard):
return {
'standard': 'keystore_type',
'2fa': 'trustedcoin_start',
'multisig': 'multisig',
'imported': 'imported'
}.get(t)