Update UI through async calls MainFrameRepaint and AddressBookRepaint instead of a timer.

- Overall, this is better design
- This fixes problems with the address book UI not updating when the address book is changed through RPC
- Move Statusbar change detection responsibility to ClientModel
This commit is contained in:
Wladimir J. van der Laan
2012-03-24 18:48:18 +01:00
parent 7e7bcce2d9
commit 98e6175874
13 changed files with 46 additions and 54 deletions

View File

@@ -7,7 +7,6 @@
#include "headers.h"
#include "db.h" // for BackupWallet
#include <QTimer>
#include <QSet>
WalletModel::WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *parent) :
@@ -16,12 +15,6 @@ WalletModel::WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *p
cachedBalance(0), cachedUnconfirmedBalance(0), cachedNumTransactions(0),
cachedEncryptionStatus(Unencrypted)
{
// Until signal notifications is built into the bitcoin core,
// simply update everything after polling using a timer.
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(MODEL_UPDATE_DELAY);
addressTableModel = new AddressTableModel(wallet, this);
transactionTableModel = new TransactionTableModel(wallet, this);
}
@@ -69,6 +62,11 @@ void WalletModel::update()
addressTableModel->update();
}
void WalletModel::updateAddressList()
{
addressTableModel->update();
}
bool WalletModel::validateAddress(const QString &address)
{
CBitcoinAddress addressParsed(address.toStdString());
@@ -164,9 +162,6 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QList<SendCoinsRecipie
}
}
// Update our model of the address table
addressTableModel->updateList();
return SendCoinsReturn(OK, 0, hex);
}