1
0
Files
electrum/electrum/gui/qml/components/wizard/WCMultisig.qml
Sander van Grieken 4c784ffe1f qml: consolidate multisig support into existing pages WCHaveSeed, WCHaveMasterKey, WCBIP39Refine.
Have these put cosigner data directly in the correct wizard_data leafs instead of relying on
wizard accept handlers.
2022-11-14 12:19:56 +01:00

103 lines
2.6 KiB
QML

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
wizard_data['multisig_cosigner_data'] = {}
}
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
value: signatures
onValueChanged: {
if (activeFocus)
signatures = value
}
}
}
Component.onCompleted: piechart.updateSlices()
}