Mercurial > hg > bitcoin
annotate src/qt/walletmodel.h @ 1192:bc546d3c46d2 draft
make initial block download reporting somewhat better by tracking version responses
author | Wladimir J. van der Laan <laanwj@gmail.com> |
---|---|
date | Sun, 17 Jul 2011 14:06:43 +0200 |
parents | 5c41b03dc484 |
children | fa39b222e5e0 |
rev | line source |
---|---|
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
1 #ifndef WALLETMODEL_H |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
2 #define WALLETMODEL_H |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
3 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
4 #include <QObject> |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
5 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
6 class OptionsModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
7 class AddressTableModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
8 class TransactionTableModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
9 class CWallet; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
10 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
11 struct SendCoinsRecipient |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
12 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
13 QString address; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
14 QString label; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
15 qint64 amount; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
16 }; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
17 |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
18 // Interface to a Bitcoin wallet |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
19 class WalletModel : public QObject |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
20 { |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
21 Q_OBJECT |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
22 public: |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
23 explicit WalletModel(CWallet *wallet, QObject *parent = 0); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
24 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
25 enum StatusCode |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
26 { |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
27 OK, |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
28 InvalidAmount, |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
29 InvalidAddress, |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
30 AmountExceedsBalance, |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
31 AmountWithFeeExceedsBalance, |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
32 DuplicateAddress, |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
33 TransactionCreationFailed, |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
34 TransactionCommitFailed, |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
35 Aborted, |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
36 MiscError |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
37 }; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
38 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
39 OptionsModel *getOptionsModel(); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
40 AddressTableModel *getAddressTableModel(); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
41 TransactionTableModel *getTransactionTableModel(); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
42 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
43 qint64 getBalance() const; |
1173
2f76dc263dfe
Show unconfirmed balance on overview page
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1163
diff
changeset
|
44 qint64 getUnconfirmedBalance() const; |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
45 int getNumTransactions() const; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
46 |
1187
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
47 // Check address for validity |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
48 bool validateAddress(const QString &address); |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
49 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
50 // Return status record for SendCoins |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
51 // fee is used in case status is "AmountWithFeeExceedsBalance" |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
52 // hex is filled with the transaction hash if status is "OK" |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
53 struct SendCoinsReturn |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
54 { |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
55 SendCoinsReturn(StatusCode status, |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
56 qint64 fee=0, |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
57 QString hex=QString()): |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
58 status(status), fee(fee), hex(hex) {} |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
59 StatusCode status; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
60 qint64 fee; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
61 QString hex; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
62 }; |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
63 |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
64 // Send coins to list of recipients |
5c41b03dc484
add sendmany support
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1176
diff
changeset
|
65 SendCoinsReturn sendCoins(const QList<SendCoinsRecipient> &recipients); |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
66 private: |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
67 CWallet *wallet; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
68 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
69 // Wallet has an options model for wallet-specific options |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
70 // (transaction fee, for example) |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
71 OptionsModel *optionsModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
72 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
73 AddressTableModel *addressTableModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
74 TransactionTableModel *transactionTableModel; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
75 |
1192
bc546d3c46d2
make initial block download reporting somewhat better by tracking version responses
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
76 qint64 cachedBalance; |
bc546d3c46d2
make initial block download reporting somewhat better by tracking version responses
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
77 qint64 cachedUnconfirmedBalance; |
bc546d3c46d2
make initial block download reporting somewhat better by tracking version responses
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
78 qint64 cachedNumTransactions; |
bc546d3c46d2
make initial block download reporting somewhat better by tracking version responses
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1187
diff
changeset
|
79 |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
80 signals: |
1176
b1a09eca2755
solve warnings at startup
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
1173
diff
changeset
|
81 void balanceChanged(qint64 balance, qint64 unconfirmedBalance); |
1113
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
82 void numTransactionsChanged(int count); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
83 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
84 // Asynchronous error notification |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
85 void error(const QString &title, const QString &message); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
86 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
87 public slots: |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
88 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
89 private slots: |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
90 void update(); |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
91 }; |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
92 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
93 |
fed522d006eb
Split off WalletModel from ClientModel, to be able to support multi-wallets in future
Wladimir J. van der Laan <laanwj@gmail.com>
parents:
diff
changeset
|
94 #endif // WALLETMODEL_H |