Add context menu on transaction list: copy label, copy address, edit label, show...
[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     /* Send coins */
37     StatusCode sendCoins(const QString &payTo, qint64 payAmount, const QString &addToAddressBookAs=QString());
38 private:
39     CWallet *wallet;
40
41     // Wallet has an options model for wallet-specific options
42     // (transaction fee, for example)
43     OptionsModel *optionsModel;
44
45     AddressTableModel *addressTableModel;
46     TransactionTableModel *transactionTableModel;
47
48 signals:
49     void balanceChanged(qint64 balance);
50     void numTransactionsChanged(int count);
51
52     // Asynchronous error notification
53     void error(const QString &title, const QString &message);
54
55 public slots:
56
57 private slots:
58     void update();
59 };
60
61
62 #endif // WALLETMODEL_H