Skip to content

Commit a77c7f1

Browse files
committed
qml: use signal based navigation in CreateWallet pages, introduce wizard
Makes our CreateWallet flow into a wizard, as that is what it should be. The CreateWalletWizard is introduced as a StackView with the associated pages implementing signal based navigation. Previously, there was an interlinked dependency between CreateName and CreatePassword in that CreateName would pass a string for walletName to CreatePassword. This dependency is removed by having CreateName set the string in a property contained in the CreateWalletWizard StackView, and CreatePassword pulling in this property to satisfy its requirement for walletName. This is a temporary workaround so that we can still have clearly contained pages here. A follow-up should move this into a more appropriate backend object
1 parent 02a3b25 commit a77c7f1

File tree

9 files changed

+72
-27
lines changed

9 files changed

+72
-27
lines changed

src/Makefile.qt.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,12 +428,12 @@ QML_RES_QML = \
428428
qml/pages/settings/SettingsProxy.qml \
429429
qml/pages/settings/SettingsStorage.qml \
430430
qml/pages/settings/SettingsTheme.qml \
431-
qml/pages/wallet/AddWallet.qml \
432431
qml/pages/wallet/CreateBackup.qml \
433432
qml/pages/wallet/CreateConfirm.qml \
434433
qml/pages/wallet/CreateIntro.qml \
435434
qml/pages/wallet/CreateName.qml \
436435
qml/pages/wallet/CreatePassword.qml \
436+
qml/pages/wallet/CreateWalletWizard.qml \
437437
qml/pages/wallet/DesktopWallets.qml \
438438
qml/pages/wallet/WalletBadge.qml \
439439
qml/pages/wallet/WalletSelect.qml

src/qml/bitcoin_qml.qrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@
6868
<file>pages/settings/SettingsProxy.qml</file>
6969
<file>pages/settings/SettingsStorage.qml</file>
7070
<file>pages/settings/SettingsTheme.qml</file>
71-
<file>pages/wallet/AddWallet.qml</file>
7271
<file>pages/wallet/CreateBackup.qml</file>
7372
<file>pages/wallet/CreateConfirm.qml</file>
7473
<file>pages/wallet/CreateIntro.qml</file>
7574
<file>pages/wallet/CreateName.qml</file>
7675
<file>pages/wallet/CreatePassword.qml</file>
76+
<file>pages/wallet/CreateWalletWizard.qml</file>
7777
<file>pages/wallet/DesktopWallets.qml</file>
7878
<file>pages/wallet/WalletBadge.qml</file>
7979
<file>pages/wallet/WalletSelect.qml</file>

src/qml/pages/main.qml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ ApplicationWindow {
9898
optionsModel.onboard()
9999
if (AppMode.walletEnabled && AppMode.isDesktop) {
100100
main.push(desktopWallets)
101-
main.push(addWallet)
101+
main.push(createWalletWizard)
102102
} else {
103103
main.push(node)
104104
}
@@ -112,8 +112,8 @@ ApplicationWindow {
112112
}
113113

114114
Component {
115-
id: addWallet
116-
AddWallet {
115+
id: createWalletWizard
116+
CreateWalletWizard {
117117
onFinished: {
118118
main.pop()
119119
}

src/qml/pages/wallet/CreateBackup.qml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import "../settings"
1212

1313
Page {
1414
id: root
15+
signal back
16+
signal next
1517
background: null
1618

1719
header: NavigationBar2 {
@@ -20,7 +22,7 @@ Page {
2022
iconSource: "image://images/caret-left"
2123
text: qsTr("Back")
2224
onClicked: {
23-
root.StackView.view.pop()
25+
root.back()
2426
}
2527
}
2628
}
@@ -83,7 +85,7 @@ Page {
8385
Layout.alignment: Qt.AlignCenter
8486
text: qsTr("Done")
8587
onClicked: {
86-
root.StackView.view.finished()
88+
root.next()
8789
}
8890
}
8991
}

src/qml/pages/wallet/CreateConfirm.qml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import "../settings"
1212

1313
Page {
1414
id: root
15+
signal back
16+
signal next
1517
background: null
1618

1719
header: NavigationBar2 {
@@ -20,7 +22,7 @@ Page {
2022
iconSource: "image://images/caret-left"
2123
text: qsTr("Back")
2224
onClicked: {
23-
root.StackView.view.pop()
25+
root.back()
2426
}
2527
}
2628
}
@@ -67,7 +69,7 @@ Page {
6769
Layout.alignment: Qt.AlignCenter
6870
text: qsTr("Next")
6971
onClicked: {
70-
root.StackView.view.push("qrc:/qml/pages/wallet/CreateBackup.qml")
72+
root.next()
7173
}
7274
}
7375
}

src/qml/pages/wallet/CreateIntro.qml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import "../settings"
1212

1313
Page {
1414
id: root
15+
signal back
16+
signal next
1517
background: null
1618

1719
header: NavigationBar2 {
@@ -20,7 +22,7 @@ Page {
2022
iconSource: "image://images/caret-left"
2123
text: qsTr("Back")
2224
onClicked: {
23-
root.StackView.view.pop()
25+
root.back()
2426
}
2527
}
2628
}
@@ -107,7 +109,7 @@ Page {
107109
Layout.alignment: Qt.AlignCenter
108110
text: qsTr("Start")
109111
onClicked: {
110-
root.StackView.view.push("qrc:/qml/pages/wallet/CreateName.qml")
112+
root.next()
111113
}
112114
}
113115
}

src/qml/pages/wallet/CreateName.qml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import "../settings"
1212

1313
Page {
1414
id: root
15+
signal back
16+
signal next
17+
property string walletName: ""
1518
background: null
1619

1720
header: NavigationBar2 {
@@ -20,7 +23,7 @@ Page {
2023
iconSource: "image://images/caret-left"
2124
text: qsTr("Back")
2225
onClicked: {
23-
root.StackView.view.pop()
26+
root.back()
2427
}
2528
}
2629
}
@@ -62,14 +65,8 @@ Page {
6265
text: qsTr("Continue")
6366
onClicked: {
6467
console.log("Creating wallet with name: " + walletNameInput.text)
65-
root.StackView.view.push(createPassword)
66-
}
67-
}
68-
69-
Component {
70-
id: createPassword
71-
CreatePassword {
72-
walletName: walletNameInput.text
68+
root.walletName = walletNameInput.text
69+
root.next()
7370
}
7471
}
7572
}

src/qml/pages/wallet/CreatePassword.qml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import "../settings"
1212

1313
Page {
1414
id: root
15+
signal back
16+
signal next
1517
background: null
1618

1719
required property string walletName;
@@ -22,14 +24,14 @@ Page {
2224
iconSource: "image://images/caret-left"
2325
text: qsTr("Back")
2426
onClicked: {
25-
root.StackView.view.pop()
27+
root.back()
2628
}
2729
}
2830
rightItem: NavButton {
2931
text: qsTr("Skip")
3032
onClicked: {
3133
walletController.createSingleSigWallet(walletName, "")
32-
root.StackView.view.push("qrc:/qml/pages/wallet/CreateConfirm.qml")
34+
root.next()
3335
}
3436
}
3537
}
@@ -108,7 +110,7 @@ Page {
108110
enabled: password.text != "" && passwordRepeat.text != "" && password.text == passwordRepeat.text && confirmToggle.loadedItem.checked
109111
onClicked: {
110112
walletController.createSingleSigWallet(walletName, password.text)
111-
root.StackView.view.push("qrc:/qml/pages/wallet/CreateConfirm.qml")
113+
root.next()
112114
}
113115
}
114116
}

src/qml/pages/wallet/AddWallet.qml renamed to src/qml/pages/wallet/CreateWalletWizard.qml

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import "../settings"
1111
import "../wallet"
1212

1313
StackView {
14-
id: addWalletStack
14+
id: root
1515

1616
signal finished()
17+
property string walletName: ""
1718

1819
initialItem: Page {
1920
background: null
@@ -23,7 +24,7 @@ StackView {
2324
rightItem: NavButton {
2425
text: qsTr("Skip")
2526
onClicked: {
26-
addWalletStack.finished()
27+
root.finished()
2728
}
2829
}
2930
}
@@ -59,7 +60,7 @@ StackView {
5960
Layout.alignment: Qt.AlignCenter
6061
text: qsTr("Create wallet")
6162
onClicked: {
62-
addWalletStack.push("qrc:/qml/pages/wallet/CreateIntro.qml");
63+
root.push(intro)
6364
}
6465
}
6566

@@ -79,5 +80,44 @@ StackView {
7980
}
8081
}
8182
}
83+
Component {
84+
id: intro
85+
CreateIntro {
86+
onBack: root.pop()
87+
onNext: root.push(name)
88+
}
89+
}
90+
Component {
91+
id: name
92+
CreateName {
93+
id: createName
94+
onBack: root.pop()
95+
onNext: {
96+
root.walletName = createName.walletName
97+
root.push(password)
98+
}
99+
}
100+
}
101+
Component {
102+
id: password
103+
CreatePassword {
104+
walletName: root.walletName
105+
onBack: root.pop()
106+
onNext: root.push(confirm)
107+
}
108+
}
109+
Component {
110+
id: confirm
111+
CreateConfirm {
112+
onBack: root.pop()
113+
onNext: root.push(backup)
114+
}
115+
}
116+
Component {
117+
id: backup
118+
CreateBackup {
119+
onBack: root.pop()
120+
onNext: root.finished()
121+
}
122+
}
82123
}
83-

0 commit comments

Comments
 (0)