diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include
index 8217d04798..6936bd0ca4 100644
--- a/src/Makefile.qt.include
+++ b/src/Makefile.qt.include
@@ -382,6 +382,7 @@ QML_RES_QML = \
qml/components/ThemeSettings.qml \
qml/components/TotalBytesIndicator.qml \
qml/components/Tooltip.qml \
+ qml/controls/AddWalletButton.qml \
qml/controls/CaretRightIcon.qml \
qml/controls/ContinueButton.qml \
qml/controls/CoreText.qml \
diff --git a/src/qml/bitcoin_qml.qrc b/src/qml/bitcoin_qml.qrc
index 61d2607fca..04c3fe7a85 100644
--- a/src/qml/bitcoin_qml.qrc
+++ b/src/qml/bitcoin_qml.qrc
@@ -20,6 +20,7 @@
components/ThemeSettings.qml
components/TotalBytesIndicator.qml
components/Tooltip.qml
+ controls/AddWalletButton.qml
controls/ContinueButton.qml
controls/CoreText.qml
controls/CoreTextField.qml
diff --git a/src/qml/controls/AddWalletButton.qml b/src/qml/controls/AddWalletButton.qml
new file mode 100644
index 0000000000..8a2bca3dc5
--- /dev/null
+++ b/src/qml/controls/AddWalletButton.qml
@@ -0,0 +1,83 @@
+// Copyright (c) 2024 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
+
+import org.bitcoincore.qt 1.0
+
+Button {
+ id: root
+
+ property color bgActiveColor: Theme.color.neutral2
+ property color textColor: Theme.color.neutral7
+ property color textHoverColor: Theme.color.orange
+ property color textActiveColor: Theme.color.orange
+
+ hoverEnabled: AppMode.isDesktop
+ implicitHeight: 30
+ implicitWidth: 220
+
+ MouseArea {
+ anchors.fill: parent
+ enabled: false
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ }
+
+ contentItem: Item {
+ anchors.fill: parent
+ RowLayout {
+ anchors.centerIn: parent
+ spacing: 3
+ Icon {
+ id: addIcon
+ Layout.alignment: Qt.AlignRight
+ source: "image://images/plus"
+ color: Theme.color.neutral7
+ size: 16
+ Layout.minimumWidth: 16
+ Layout.preferredWidth: 16
+ Layout.maximumWidth: 16
+ }
+ CoreText {
+ id: addText
+ Layout.fillHeight: true
+ Layout.alignment: Qt.AlignLeft
+ text: qsTr("Add Wallet")
+ color: Theme.color.neutral7
+ font.pixelSize: 15
+ }
+ }
+ }
+
+ background: Rectangle {
+ id: bg
+ height: 30
+ width: 220
+ radius: 5
+ color: Theme.color.neutral3
+ visible: root.hovered || root.checked
+
+ FocusBorder {
+ visible: root.visualFocus
+ }
+
+ Behavior on color {
+ ColorAnimation { duration: 150 }
+ }
+ }
+
+ states: [
+ State {
+ name: "CHECKED"; when: root.checked
+ },
+ State {
+ name: "HOVER"; when: root.hovered
+ PropertyChanges { target: addText; color: textHoverColor }
+ PropertyChanges { target: addIcon; color: textHoverColor }
+ }
+ ]
+}
diff --git a/src/qml/pages/main.qml b/src/qml/pages/main.qml
index 7e0854a7c2..ca52806ada 100644
--- a/src/qml/pages/main.qml
+++ b/src/qml/pages/main.qml
@@ -80,13 +80,17 @@ ApplicationWindow {
Component {
id: desktopWallets
- DesktopWallets {}
+ DesktopWallets {
+ onAddWallet: {
+ main.push(createWalletWizard)
+ }
+ }
}
Component {
id: createWalletWizard
CreateWalletWizard {
- onFinished: {
+ onFinished: {
main.pop()
}
}
diff --git a/src/qml/pages/wallet/DesktopWallets.qml b/src/qml/pages/wallet/DesktopWallets.qml
index 1e45d8d248..ccaa787933 100644
--- a/src/qml/pages/wallet/DesktopWallets.qml
+++ b/src/qml/pages/wallet/DesktopWallets.qml
@@ -19,6 +19,8 @@ Page {
ButtonGroup { id: navigationTabs }
+ signal addWallet()
+
header: NavigationBar2 {
id: navBar
leftItem: WalletBadge {
@@ -41,6 +43,10 @@ Page {
closePolicy: Popup.CloseOnPressOutside
x: 0
y: parent.height
+
+ onAddWallet: {
+ root.addWallet()
+ }
}
}
centerItem: RowLayout {
diff --git a/src/qml/pages/wallet/WalletSelect.qml b/src/qml/pages/wallet/WalletSelect.qml
index 9905bc242f..28d0eae0cc 100644
--- a/src/qml/pages/wallet/WalletSelect.qml
+++ b/src/qml/pages/wallet/WalletSelect.qml
@@ -12,10 +12,12 @@ Popup {
id: root
property alias model: listView.model
- implicitHeight: layout.height + arrow.height
+ implicitHeight: layout.height + arrow.height + 11
implicitWidth: 250
clip: true
+ signal addWallet()
+
background: Item {
anchors.fill: parent
Rectangle {
@@ -89,28 +91,14 @@ Popup {
}
}
- RowLayout {
+ AddWalletButton {
id: addWallet
- Layout.preferredWidth: addIcon.size + addText.width
- Layout.preferredHeight: 45
Layout.alignment: Qt.AlignHCenter
- Icon {
- id: addIcon
- Layout.alignment: Qt.AlignHCenter
- source: "image://images/plus"
- color: Theme.color.neutral8
- size: 14
- topPadding: 5
- bottomPadding: 10
- }
- CoreText {
- id: addText
- Layout.alignment: Qt.AlignHCenter
- text: qsTr("Add Wallet")
- color: Theme.color.neutral9
- font.pixelSize: 15
- topPadding: 5
- bottomPadding: 10
+ Layout.preferredWidth: 220
+ Layout.preferredHeight: 30
+ onClicked: {
+ root.addWallet()
+ root.close()
}
}
}