show last few transactions on overview page
[novacoin.git] / src / qt / transactiontablemodel.h
1 #ifndef TRANSACTIONTABLEMODEL_H
2 #define TRANSACTIONTABLEMODEL_H
3
4 #include <QAbstractTableModel>
5 #include <QStringList>
6
7 class CWallet;
8 class TransactionTablePriv;
9 class TransactionRecord;
10 class WalletModel;
11
12 class TransactionTableModel : public QAbstractTableModel
13 {
14     Q_OBJECT
15 public:
16     explicit TransactionTableModel(CWallet* wallet, WalletModel *parent = 0);
17     ~TransactionTableModel();
18
19     enum {
20         Status = 0,
21         Date = 1,
22         Type = 2,
23         ToAddress = 3,
24         Amount = 4
25     } ColumnIndex;
26
27     // Roles to get specific information from a transaction row
28     // These are independent of column
29     enum {
30         // Type of transaction
31         TypeRole = Qt::UserRole,
32         // Date and time this transaction was created
33         DateRole,
34         // Long description (HTML format)
35         LongDescriptionRole,
36         // Address of transaction
37         AddressRole,
38         // Label of address related to transaction
39         LabelRole,
40         // Absolute net amount of transaction, for filtering
41         AbsoluteAmountRole,
42         // Net amount of transaction
43         AmountRole,
44         // Unique identifier
45         TxIDRole,
46         // Is transaction confirmed?
47         ConfirmedRole,
48         // Formatted amount, without brackets when unconfirmed
49         FormattedAmountRole
50     } RoleIndex;
51
52     int rowCount(const QModelIndex &parent) const;
53     int columnCount(const QModelIndex &parent) const;
54     QVariant data(const QModelIndex &index, int role) const;
55     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
56     Qt::ItemFlags flags(const QModelIndex &index) const;
57     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
58 private:
59     CWallet* wallet;
60     WalletModel *walletModel;
61     QStringList columns;
62     TransactionTablePriv *priv;
63
64     QString lookupAddress(const std::string &address, bool tooltip) const;
65     QVariant addressColor(const TransactionRecord *wtx) const;
66     QVariant formatTxStatus(const TransactionRecord *wtx) const;
67     QVariant formatTxDate(const TransactionRecord *wtx) const;
68     QString formatTxType(const TransactionRecord *wtx) const;
69     QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const;
70     QVariant formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const;
71     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
72     QVariant txAddressDecoration(const TransactionRecord *wtx) const;
73
74 private slots:
75     void update();
76
77     friend class TransactionTablePriv;
78 };
79
80 #endif
81