Implement filter row instead of tabs, allows for more expressive filters
[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     /* TypeRole values */
43     static const QString Sent;
44     static const QString Received;
45     static const QString Other;
46
47     int rowCount(const QModelIndex &parent) const;
48     int columnCount(const QModelIndex &parent) const;
49     QVariant data(const QModelIndex &index, int role) const;
50     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
51     Qt::ItemFlags flags(const QModelIndex &index) const;
52     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
53 private:
54     CWallet* wallet;
55     QStringList columns;
56     TransactionTablePriv *priv;
57
58     QString labelForAddress(const std::string &address) const;
59     QString lookupAddress(const std::string &address) const;
60     QVariant formatTxStatus(const TransactionRecord *wtx) const;
61     QVariant formatTxDate(const TransactionRecord *wtx) const;
62     QVariant formatTxType(const TransactionRecord *wtx) const;
63     QVariant formatTxToAddress(const TransactionRecord *wtx) const;
64     QVariant formatTxAmount(const TransactionRecord *wtx) const;
65     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
66
67 private slots:
68     void update();
69
70     friend class TransactionTablePriv;
71 };
72
73 #endif
74