835b38757532331ef98e30a0829f7420d11f9cd0
[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
11 class TransactionTableModel : public QAbstractTableModel
12 {
13     Q_OBJECT
14 public:
15     explicit TransactionTableModel(CWallet* wallet, QObject *parent = 0);
16     ~TransactionTableModel();
17
18     enum {
19         Status = 0,
20         Date = 1,
21         Type = 2,
22         ToAddress = 3,
23         Amount = 4
24     } ColumnIndex;
25
26     // Roles to get specific information from a transaction row
27     enum {
28         // Type of transaction
29         TypeRole = Qt::UserRole,
30         // Date and time this transaction was created
31         DateRole,
32         // Long description (HTML format)
33         LongDescriptionRole,
34         // Address of transaction
35         AddressRole,
36         // Label of address related to transaction
37         LabelRole,
38         // Absolute net amount of transaction
39         AbsoluteAmountRole
40     } RoleIndex;
41
42     int rowCount(const QModelIndex &parent) const;
43     int columnCount(const QModelIndex &parent) const;
44     QVariant data(const QModelIndex &index, int role) const;
45     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
46     Qt::ItemFlags flags(const QModelIndex &index) const;
47     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
48 private:
49     CWallet* wallet;
50     QStringList columns;
51     TransactionTablePriv *priv;
52
53     QString labelForAddress(const std::string &address) const;
54     QString lookupAddress(const std::string &address) const;
55     QVariant formatTxStatus(const TransactionRecord *wtx) const;
56     QVariant formatTxDate(const TransactionRecord *wtx) const;
57     QVariant formatTxType(const TransactionRecord *wtx) const;
58     QVariant formatTxToAddress(const TransactionRecord *wtx) const;
59     QVariant formatTxAmount(const TransactionRecord *wtx) const;
60     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
61
62 private slots:
63     void update();
64
65     friend class TransactionTablePriv;
66 };
67
68 #endif
69