aboutsummaryrefslogtreecommitdiff
path: root/src/qt/clientmodel.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2011-06-30 18:05:29 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2011-06-30 18:05:29 +0200
commitef079e183bf1be9f5a61a05018ee4480db86bc45 (patch)
treecc14168e8fff26b5024086ca32c471277a0a6c71 /src/qt/clientmodel.cpp
parent929eb9dc6cc65d1ff47ff21dcb9fa5974a9278ee (diff)
downloadbitcoin-ef079e183bf1be9f5a61a05018ee4480db86bc45.tar.xz
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Diffstat (limited to 'src/qt/clientmodel.cpp')
-rw-r--r--src/qt/clientmodel.cpp93
1 files changed, 1 insertions, 92 deletions
diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp
index b70b71ee4f..125cb91017 100644
--- a/src/qt/clientmodel.cpp
+++ b/src/qt/clientmodel.cpp
@@ -9,8 +9,7 @@
#include <QTimer>
ClientModel::ClientModel(CWallet *wallet, QObject *parent) :
- QObject(parent), wallet(wallet), optionsModel(0), addressTableModel(0),
- transactionTableModel(0)
+ QObject(parent), wallet(wallet), optionsModel(0)
{
// Until signal notifications is built into the bitcoin core,
// simply update everything after polling using a timer.
@@ -19,13 +18,6 @@ ClientModel::ClientModel(CWallet *wallet, QObject *parent) :
timer->start(MODEL_UPDATE_DELAY);
optionsModel = new OptionsModel(wallet, this);
- addressTableModel = new AddressTableModel(wallet, this);
- transactionTableModel = new TransactionTableModel(wallet, this);
-}
-
-qint64 ClientModel::getBalance() const
-{
- return wallet->GetBalance();
}
int ClientModel::getNumConnections() const
@@ -38,86 +30,13 @@ int ClientModel::getNumBlocks() const
return nBestHeight;
}
-int ClientModel::getNumTransactions() const
-{
- int numTransactions = 0;
- CRITICAL_BLOCK(wallet->cs_mapWallet)
- {
- numTransactions = wallet->mapWallet.size();
- }
- return numTransactions;
-}
-
void ClientModel::update()
{
// Plainly emit all signals for now. To be more efficient this should check
// whether the values actually changed first, although it'd be even better if these
// were events coming in from the bitcoin core.
- emit balanceChanged(getBalance());
emit numConnectionsChanged(getNumConnections());
emit numBlocksChanged(getNumBlocks());
- emit numTransactionsChanged(getNumTransactions());
-
- addressTableModel->update();
-}
-
-ClientModel::StatusCode ClientModel::sendCoins(const QString &payTo, qint64 payAmount, const QString &addToAddressBookAs)
-{
- uint160 hash160 = 0;
- bool valid = false;
-
- if(!AddressToHash160(payTo.toUtf8().constData(), hash160))
- {
- return InvalidAddress;
- }
-
- if(payAmount <= 0)
- {
- return InvalidAmount;
- }
-
- if(payAmount > getBalance())
- {
- return AmountExceedsBalance;
- }
-
- if((payAmount + nTransactionFee) > getBalance())
- {
- return AmountWithFeeExceedsBalance;
- }
-
- CRITICAL_BLOCK(cs_main)
- {
- // Send to bitcoin address
- CWalletTx wtx;
- CScript scriptPubKey;
- scriptPubKey << OP_DUP << OP_HASH160 << hash160 << OP_EQUALVERIFY << OP_CHECKSIG;
-
- std::string strError = wallet->SendMoney(scriptPubKey, payAmount, wtx, true);
- if (strError == "")
- {
- // OK
- }
- else if (strError == "ABORTED")
- {
- return Aborted;
- }
- else
- {
- emit error(tr("Sending..."), QString::fromStdString(strError));
- return MiscError;
- }
- }
-
- // Add addresses that we've sent to to the address book
- std::string strAddress = payTo.toStdString();
- CRITICAL_BLOCK(wallet->cs_mapAddressBook)
- {
- if (!wallet->mapAddressBook.count(strAddress))
- wallet->SetAddressBookName(strAddress, addToAddressBookAs.toStdString());
- }
-
- return OK;
}
bool ClientModel::inInitialBlockDownload() const
@@ -130,18 +49,8 @@ int ClientModel::getTotalBlocksEstimate() const
return GetTotalBlocksEstimate();
}
-
OptionsModel *ClientModel::getOptionsModel()
{
return optionsModel;
}
-AddressTableModel *ClientModel::getAddressTableModel()
-{
- return addressTableModel;
-}
-
-TransactionTableModel *ClientModel::getTransactionTableModel()
-{
- return transactionTableModel;
-}