Export functionality for transaction list
[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) const;
63     QVariant formatTxStatus(const TransactionRecord *wtx) const;
64     QVariant formatTxDate(const TransactionRecord *wtx) const;
65     QVariant formatTxType(const TransactionRecord *wtx) const;
66     QVariant formatTxToAddress(const TransactionRecord *wtx) const;
67     QVariant formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const;
68     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
69
70 private slots:
71     void update();
72
73     friend class TransactionTablePriv;
74 };
75
76 #endif
77