4
4
5
5
#include < qml/walletqmlcontroller.h>
6
6
7
+ #include < qml/models/walletqmlmodel.h>
8
+
7
9
#include < interfaces/node.h>
8
10
#include < support/allocators/secure.h>
9
11
#include < wallet/walletutil.h>
@@ -37,19 +39,19 @@ WalletQmlController::~WalletQmlController()
37
39
38
40
void WalletQmlController::setSelectedWallet (QString path)
39
41
{
42
+ if (!m_wallets.empty ()) {
43
+ for (WalletQmlModel* wallet : m_wallets) {
44
+ if (wallet->name () == path) {
45
+ m_selected_wallet = wallet;
46
+ Q_EMIT selectedWalletChanged ();
47
+ return ;
48
+ }
49
+ }
50
+ }
51
+
40
52
QTimer::singleShot (0 , m_worker, [this , path = path.toStdString ()]() {
41
53
std::vector<bilingual_str> warning_message;
42
54
auto wallet{m_node.walletLoader ().loadWallet (path, warning_message)};
43
- if (wallet.has_value ()) {
44
- auto wallet_model = new WalletQmlModel (std::move (wallet.value ()));
45
- wallet_model->moveToThread (this ->thread ());
46
- {
47
- QMutexLocker locker (&m_wallets_mutex);
48
- m_selected_wallet = wallet_model;
49
- m_wallets.push_back (m_selected_wallet);
50
- }
51
- Q_EMIT selectedWalletChanged ();
52
- }
53
55
});
54
56
}
55
57
@@ -85,20 +87,22 @@ void WalletQmlController::createSingleSigWallet(const QString &name, const QStri
85
87
86
88
void WalletQmlController::handleLoadWallet (std::unique_ptr<interfaces::Wallet> wallet)
87
89
{
88
- {
89
- QMutexLocker locker (&m_wallets_mutex);
90
- if (!m_wallets. empty ()) {
91
- QString name = QString::fromStdString (wallet-> getWalletName ());
92
- for (WalletQmlModel* wallet_model : m_wallets ) {
93
- if (wallet_model-> name () == name) {
94
- return ;
95
- }
90
+ QMutexLocker locker (&m_wallets_mutex);
91
+ if (!m_wallets. empty ()) {
92
+ QString name = QString::fromStdString (wallet-> getWalletName ());
93
+ for (WalletQmlModel* wallet_model : m_wallets) {
94
+ if ( wallet_model-> name () == name ) {
95
+ m_selected_wallet = wallet_model;
96
+ Q_EMIT selectedWalletChanged () ;
97
+ return ;
96
98
}
97
99
}
98
-
99
- m_selected_wallet = new WalletQmlModel (std::move (wallet));
100
- m_wallets.push_back (m_selected_wallet);
101
100
}
101
+
102
+ auto wallet_model = new WalletQmlModel (std::move (wallet));
103
+ wallet_model->moveToThread (this ->thread ());
104
+ m_selected_wallet = wallet_model;
105
+ m_wallets.push_back (m_selected_wallet);
102
106
Q_EMIT selectedWalletChanged ();
103
107
}
104
108
@@ -110,6 +114,10 @@ void WalletQmlController::initialize()
110
114
111
115
auto wallets = m_node.walletLoader ().getWallets ();
112
116
for (auto & wallet : wallets) {
113
- handleLoadWallet (std::move (wallet));
117
+ m_wallets.push_back (new WalletQmlModel (std::move (wallet)));
118
+ }
119
+ if (!m_wallets.empty ()) {
120
+ m_selected_wallet = m_wallets.front ();
121
+ Q_EMIT selectedWalletChanged ();
114
122
}
115
123
}
0 commit comments