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() } } }