71b0644110e9dbedda7f0d14feaf053e71bb31f3
[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         // Unique identifier
43         TxIDRole,
44         // Is transaction confirmed?
45         ConfirmedRole,
46         // Formatted amount, without brackets when unconfirmed
47         FormattedAmountRole
48     } RoleIndex;
49
50     int rowCount(const QModelIndex &parent) const;
51     int columnCount(const QModelIndex &parent) const;
52     QVariant data(const QModelIndex &index, int role) const;
53     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
54     Qt::ItemFlags flags(const QModelIndex &index) const;
55     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
56 private:
57     CWallet* wallet;
58     WalletModel *walletModel;
59     QStringList columns;
60     TransactionTablePriv *priv;
61
62     QString lookupAddress(const std::string &address, bool tooltip) const;
63     QVariant addressColor(const TransactionRecord *wtx) const;
64     QVariant formatTxStatus(const TransactionRecord *wtx) const;
65     QVariant formatTxDate(const TransactionRecord *wtx) const;
66     QString formatTxType(const TransactionRecord *wtx) const;
67     QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const;
68     QVariant formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const;
69     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
70     QVariant txAddressDecoration(const TransactionRecord *wtx) const;
71
72 private slots:
73     void update();
74
75     friend class TransactionTablePriv;
76 };
77
78 #endif
79