Somewhat confident now, tested on GNOME+KDE, with all types of transactions. Next...
[novacoin.git] / gui / include / transactiontablemodel.h
1 #ifndef TRANSACTIONTABLEMODEL_H
2 #define TRANSACTIONTABLEMODEL_H
3
4 #include <QAbstractTableModel>
5 #include <QStringList>
6
7 class TransactionTablePriv;
8 class TransactionRecord;
9
10 class TransactionTableModel : public QAbstractTableModel
11 {
12     Q_OBJECT
13 public:
14     explicit TransactionTableModel(QObject *parent = 0);
15     ~TransactionTableModel();
16
17     enum {
18         Status = 0,
19         Date = 1,
20         Description = 2,
21         Debit = 3,
22         Credit = 4
23     } ColumnIndex;
24
25     enum {
26         TypeRole = Qt::UserRole,
27         LongDescriptionRole = Qt::UserRole+1
28     } RoleIndex;
29
30     /* TypeRole values */
31     static const QString Sent;
32     static const QString Received;
33     static const QString Other;
34
35     int rowCount(const QModelIndex &parent) const;
36     int columnCount(const QModelIndex &parent) const;
37     QVariant data(const QModelIndex &index, int role) const;
38     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
39     Qt::ItemFlags flags(const QModelIndex &index) const;
40     QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
41 private:
42     QStringList columns;
43     TransactionTablePriv *priv;
44
45     QVariant formatTxStatus(const TransactionRecord *wtx) const;
46     QVariant formatTxDate(const TransactionRecord *wtx) const;
47     QVariant formatTxDescription(const TransactionRecord *wtx) const;
48     QVariant formatTxDebit(const TransactionRecord *wtx) const;
49     QVariant formatTxCredit(const TransactionRecord *wtx) const;
50
51 private slots:
52     void update();
53
54     friend class TransactionTablePriv;
55 };
56
57 #endif
58