Skip to content

Commit 5b9b484

Browse files
committed
qml: Show Add Wallet in WalletBadge if none are found
1 parent 7af55d5 commit 5b9b484

File tree

4 files changed

+39
-11
lines changed

4 files changed

+39
-11
lines changed

src/qml/pages/wallet/DesktopWallets.qml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,20 @@ Page {
3030
text: walletController.selectedWallet.name
3131
balance: walletController.selectedWallet.balance
3232
loading: !walletController.initialized
33-
noWalletAvailable: !walletController.isWalletLoaded
33+
noWalletLoaded: !walletController.isWalletLoaded
34+
noWalletsFound: walletController.noWalletsFound
3435

3536
MouseArea {
3637
anchors.fill: parent
3738
onClicked: {
38-
walletListModel.listWalletDir()
39-
walletSelect.opened ? walletSelect.close() : walletSelect.open()
39+
if (walletController.initialized) {
40+
walletListModel.listWalletDir()
41+
if (walletController.noWalletsFound) {
42+
root.addWallet()
43+
} else {
44+
walletSelect.opened ? walletSelect.close() : walletSelect.open()
45+
}
46+
}
4047
}
4148
}
4249

src/qml/pages/wallet/WalletBadge.qml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ Button {
2323
property bool showIcon: true
2424
property string balance: "0.0 000 000"
2525
property bool loading: false
26-
property bool noWalletAvailable: false
26+
property bool noWalletLoaded: false
27+
property bool noWalletsFound: false
2728

2829
checkable: true
2930
hoverEnabled: AppMode.isDesktop
@@ -70,7 +71,7 @@ Button {
7071
}
7172

7273
RowLayout {
73-
visible: !root.loading && root.noWalletAvailable
74+
visible: !root.loading && root.noWalletLoaded
7475

7576
opacity: visible ? 1 : 0
7677

@@ -85,25 +86,25 @@ Button {
8586
spacing: 5
8687
Icon {
8788
visible: root.showIcon
88-
source: "image://images/caret-down-medium-filled"
89+
source: root.noWalletsFound ? "image://images/plus" : "image://images/caret-down-medium-filled"
8990
color: Theme.color.neutral8
9091
size: 30
91-
Layout.minimumWidth: 30
92-
Layout.preferredWidth: 30
93-
Layout.maximumWidth: 30
92+
Layout.minimumWidth: 25
93+
Layout.preferredWidth: 25
94+
Layout.maximumWidth: 25
9495
}
9596
CoreText {
9697
horizontalAlignment: Text.AlignLeft
9798
Layout.fillWidth: true
9899
wrap: false
99100
font.pixelSize: 15
100-
text: qsTr("Select Wallet")
101+
text: root.noWalletsFound ? qsTr("Add Wallet") : qsTr("Select Wallet")
101102
color: root.textColor
102103
}
103104
}
104105

105106
RowLayout {
106-
visible: !root.loading && !root.noWalletAvailable
107+
visible: !root.loading && !root.noWalletLoaded
107108

108109
opacity: visible ? 1 : 0
109110

src/qml/walletqmlcontroller.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ void WalletQmlController::createSingleSigWallet(const QString &name, const QStri
7979
if (wallet) {
8080
m_selected_wallet = new WalletQmlModel(std::move(*wallet));
8181
m_wallets.push_back(m_selected_wallet);
82+
setNoWalletsFound(false);
8283
Q_EMIT selectedWalletChanged();
8384
} else {
8485
m_error_message = util::ErrorString(wallet);
@@ -124,6 +125,12 @@ void WalletQmlController::initialize()
124125
Q_EMIT selectedWalletChanged();
125126
}
126127

128+
if (m_node.walletLoader().listWalletDir().size() == 0) {
129+
setNoWalletsFound(true);
130+
} else {
131+
setNoWalletsFound(false);
132+
}
133+
127134
m_initialized = true;
128135
Q_EMIT initializedChanged();
129136
}
@@ -135,3 +142,11 @@ void WalletQmlController::setWalletLoaded(bool loaded)
135142
Q_EMIT isWalletLoadedChanged();
136143
}
137144
}
145+
146+
void WalletQmlController::setNoWalletsFound(bool no_wallets_found)
147+
{
148+
if (m_no_wallets_found != no_wallets_found) {
149+
m_no_wallets_found = no_wallets_found;
150+
Q_EMIT noWalletsFoundChanged();
151+
}
152+
}

src/qml/walletqmlcontroller.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class WalletQmlController : public QObject
2323
Q_PROPERTY(WalletQmlModel* selectedWallet READ selectedWallet NOTIFY selectedWalletChanged)
2424
Q_PROPERTY(bool initialized READ initialized NOTIFY initializedChanged)
2525
Q_PROPERTY(bool isWalletLoaded READ isWalletLoaded NOTIFY isWalletLoadedChanged)
26+
Q_PROPERTY(bool noWalletsFound READ noWalletsFound NOTIFY noWalletsFoundChanged)
2627

2728
public:
2829
explicit WalletQmlController(interfaces::Node& node, QObject *parent = nullptr);
@@ -36,11 +37,14 @@ class WalletQmlController : public QObject
3637
bool initialized() const { return m_initialized; }
3738
bool isWalletLoaded() const { return m_is_wallet_loaded; }
3839
void setWalletLoaded(bool loaded);
40+
bool noWalletsFound() const { return m_no_wallets_found; }
41+
void setNoWalletsFound(bool no_wallets_found);
3942

4043
Q_SIGNALS:
4144
void selectedWalletChanged();
4245
void initializedChanged();
4346
void isWalletLoadedChanged();
47+
void noWalletsFoundChanged();
4448

4549
public Q_SLOTS:
4650
void initialize();
@@ -57,6 +61,7 @@ public Q_SLOTS:
5761
std::vector<WalletQmlModel*> m_wallets;
5862
std::unique_ptr<interfaces::Handler> m_handler_load_wallet;
5963
bool m_is_wallet_loaded{false};
64+
bool m_no_wallets_found{false};
6065

6166
bilingual_str m_error_message;
6267
std::vector<bilingual_str> m_warning_messages;

0 commit comments

Comments
 (0)