9c7d16fce63f1d20457106c0d096fc1267901d80
[novacoin.git] / src / qt / walletmodel.h
1 #ifndef WALLETMODEL_H
2 #define WALLETMODEL_H
3
4 #include <QObject>
5
6 class OptionsModel;
7 class AddressTableModel;
8 class TransactionTableModel;
9 class CWallet;
10
11 // Interface to a Bitcoin wallet
12 class WalletModel : public QObject
13 {
14     Q_OBJECT
15 public:
16     explicit WalletModel(CWallet *wallet, QObject *parent = 0);
17
18     enum StatusCode
19     {
20         OK,
21         InvalidAmount,
22         InvalidAddress,
23         AmountExceedsBalance,
24         AmountWithFeeExceedsBalance,
25         Aborted,
26         MiscError
27     };
28
29     OptionsModel *getOptionsModel();
30     AddressTableModel *getAddressTableModel();
31     TransactionTableModel *getTransactionTableModel();
32
33     qint64 getBalance() const;
34     int getNumTransactions() const;
35
36     /* Look up label for address in address book, if not found return empty string.
37      */
38     QString labelForAddress(const QString &address) const;
39
40     /* Send coins */
41     StatusCode sendCoins(const QString &payTo, qint64 payAmount, const QString &addToAddressBookAs=QString());
42 private:
43     CWallet *wallet;
44
45     // Wallet has an options model for wallet-specific options
46     // (transaction fee, for example)
47     OptionsModel *optionsModel;
48
49     AddressTableModel *addressTableModel;
50     TransactionTableModel *transactionTableModel;
51
52 signals:
53     void balanceChanged(qint64 balance);
54     void numTransactionsChanged(int count);
55
56     // Asynchronous error notification
57     void error(const QString &title, const QString &message);
58
59 public slots:
60
61 private slots:
62     void update();
63 };
64
65
66 #endif // WALLETMODEL_H