Send: dialog redesign (automatically look up label for entered address)
[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     enum {
29         // Type of transaction
30         TypeRole = Qt::UserRole,
31         // Date and time this transaction was created
32         DateRole,
33         // Long description (HTML format)
34         LongDescriptionRole,
35         // Address of transaction
36         AddressRole,
37         // Label of address related to transaction
38         LabelRole,
39         // Absolute net amount of transaction
40         AbsoluteAmountRole
41     } RoleIndex;
42
43     int rowCount(const QModelIndex &parent) const;
44     int columnCount(const QModelIndex &parent) const;
45     QVariant data(const QModelIndex &index, int role) const;
46     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
47     Qt::ItemFlags flags(const QModelIndex &index) const;
48     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
49 private:
50     CWallet* wallet;
51     WalletModel *walletModel;
52     QStringList columns;
53     TransactionTablePriv *priv;
54
55     QString lookupAddress(const std::string &address) const;
56     QVariant formatTxStatus(const TransactionRecord *wtx) const;
57     QVariant formatTxDate(const TransactionRecord *wtx) const;
58     QVariant formatTxType(const TransactionRecord *wtx) const;
59     QVariant formatTxToAddress(const TransactionRecord *wtx) const;
60     QVariant formatTxAmount(const TransactionRecord *wtx) const;
61     QVariant formatTxDecoration(const TransactionRecord *wtx) const;
62
63 private slots:
64     void update();
65
66     friend class TransactionTablePriv;
67 };
68
69 #endif
70