diff --git a/main.qml b/main.qml index d6109339..e193ae29 100644 --- a/main.qml +++ b/main.qml @@ -142,10 +142,19 @@ ApplicationWindow { console.log("Error initialize wallet: ", wallet.errorString); return } + + // subscribing for wallet updates + wallet.updated.connect(onWalletUpdate); + // TODO: refresh asynchronously without blocking UI, implement signal(s) wallet.refresh(); console.log("wallet balance: ", wallet.balance) + + } + + function onWalletUpdate() { + console.log("wallet updated") leftPanel.unlockedBalanceText = walletManager.displayAmount(wallet.unlockedBalance); leftPanel.balanceText = walletManager.displayAmount(wallet.balance); } @@ -176,8 +185,11 @@ ApplicationWindow { + ", fee: " + walletManager.displayAmount(pendingTransaction.fee)); if (!pendingTransaction.commit()) { console.log("Error committing transaction: " + pendingTransaction.errorString); + } else { + wallet.refresh(); } } + wallet.disposeTransaction(pendingTransaction); } diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 77901b0c..901075b6 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -7,6 +7,7 @@ #include #include #include +#include namespace { @@ -81,7 +82,10 @@ quint64 Wallet::unlockedBalance() const bool Wallet::refresh() { - return m_walletImpl->refresh(); + bool result = m_walletImpl->refresh(); + if (result) + emit updated(); + return result; } PendingTransaction *Wallet::createTransaction(const QString &dst_addr, quint64 amount) diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 7d391429..f8263040 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -85,6 +85,9 @@ public: TransactionHistory * history(); // TODO: setListenter() when it implemented in API +signals: + void updated(); + private: Wallet(Bitmonero::Wallet *w, QObject * parent = 0);