Fabcoin Core  0.16.2
P2P Digital Currency
recentrequeststablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2017 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef FABCOIN_QT_RECENTREQUESTSTABLEMODEL_H
6 #define FABCOIN_QT_RECENTREQUESTSTABLEMODEL_H
7 
8 #include <walletmodel.h>
9 
10 #include <QAbstractTableModel>
11 #include <QStringList>
12 #include <QDateTime>
13 
14 class CWallet;
15 
17 {
18 public:
20 
21  static const int CURRENT_VERSION = 1;
22  int nVersion;
23  int64_t id;
24  QDateTime date;
26 
28 
29  template <typename Stream, typename Operation>
30  inline void SerializationOp(Stream& s, Operation ser_action) {
31  unsigned int nDate = date.toTime_t();
32 
33  READWRITE(this->nVersion);
34  READWRITE(id);
35  READWRITE(nDate);
36  READWRITE(recipient);
37 
38  if (ser_action.ForRead())
39  date = QDateTime::fromTime_t(nDate);
40  }
41 };
42 
44 {
45 public:
46  RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder):
47  column(nColumn), order(fOrder) {}
48  bool operator()(RecentRequestEntry &left, RecentRequestEntry &right) const;
49 
50 private:
51  int column;
52  Qt::SortOrder order;
53 };
54 
58 class RecentRequestsTableModel: public QAbstractTableModel
59 {
60  Q_OBJECT
61 
62 public:
63  explicit RecentRequestsTableModel(CWallet *wallet, WalletModel *parent);
65 
66  enum ColumnIndex {
67  Date = 0,
68  Label = 1,
69  Message = 2,
70  Amount = 3,
71  NUMBER_OF_COLUMNS
72  };
73 
76  int rowCount(const QModelIndex &parent) const;
77  int columnCount(const QModelIndex &parent) const;
78  QVariant data(const QModelIndex &index, int role) const;
79  bool setData(const QModelIndex &index, const QVariant &value, int role);
80  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
81  QModelIndex index(int row, int column, const QModelIndex &parent) const;
82  bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
83  Qt::ItemFlags flags(const QModelIndex &index) const;
86  const RecentRequestEntry &entry(int row) const { return list[row]; }
87  void addNewRequest(const SendCoinsRecipient &recipient);
88  void addNewRequest(const std::string &recipient);
89  void addNewRequest(RecentRequestEntry &recipient);
90 
91 public Q_SLOTS:
92  void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
93  void updateDisplayUnit();
94 
95 private:
97  QStringList columns;
98  QList<RecentRequestEntry> list;
100 
102  void updateAmountColumnTitle();
104  QString getAmountTitle();
105 };
106 
107 #endif // FABCOIN_QT_RECENTREQUESTSTABLEMODEL_H
Model for list of recently generated payment requests / fabcoin: URIs.
#define READWRITE(obj)
Definition: serialize.h:179
void SerializationOp(Stream &s, Operation ser_action)
RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder)
size_t count
Definition: ExecStats.cpp:37
const RecentRequestEntry & entry(int row) const
int64_t id
QDateTime date
QList< RecentRequestEntry > list
static const int CURRENT_VERSION
SendCoinsRecipient recipient
ADD_SERIALIZE_METHODS
Qt::SortOrder order
int nVersion
Interface to Fabcoin wallet from Qt view code.
Definition: walletmodel.h:103
A CWallet is an extension of a keystore, which also maintains a set of transactions and balances...
Definition: wallet.h:672
int column
uint8_t const * data
Definition: sha3.h:19
RecentRequestEntry()