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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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