Bitcoin Core  0.20.99
P2P Digital Currency
recentrequeststablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2019 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 BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
6 #define BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
7 
9 
10 #include <QAbstractTableModel>
11 #include <QStringList>
12 #include <QDateTime>
13 
14 class WalletModel;
15 
17 {
18 public:
20 
21  static const int CURRENT_VERSION = 1;
22  int nVersion;
23  int64_t id;
24  QDateTime date;
26 
28  unsigned int date_timet;
29  SER_WRITE(obj, date_timet = obj.date.toTime_t());
30  READWRITE(obj.nVersion, obj.id, date_timet, obj.recipient);
31  SER_READ(obj, obj.date = QDateTime::fromTime_t(date_timet));
32  }
33 };
34 
36 {
37 public:
38  RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder):
39  column(nColumn), order(fOrder) {}
40  bool operator()(const RecentRequestEntry& left, const RecentRequestEntry& right) const;
41 
42 private:
43  int column;
44  Qt::SortOrder order;
45 };
46 
50 class RecentRequestsTableModel: public QAbstractTableModel
51 {
52  Q_OBJECT
53 
54 public:
55  explicit RecentRequestsTableModel(WalletModel *parent);
57 
58  enum ColumnIndex {
59  Date = 0,
60  Label = 1,
61  Message = 2,
62  Amount = 3,
63  NUMBER_OF_COLUMNS
64  };
65 
68  int rowCount(const QModelIndex &parent) const override;
69  int columnCount(const QModelIndex &parent) const override;
70  QVariant data(const QModelIndex &index, int role) const override;
71  bool setData(const QModelIndex &index, const QVariant &value, int role) override;
72  QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
73  QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
74  bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
75  Qt::ItemFlags flags(const QModelIndex &index) const override;
76  void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
79  const RecentRequestEntry &entry(int row) const { return list[row]; }
80  void addNewRequest(const SendCoinsRecipient &recipient);
81  void addNewRequest(const std::string &recipient);
82  void addNewRequest(RecentRequestEntry &recipient);
83 
84 public Q_SLOTS:
85  void updateDisplayUnit();
86 
87 private:
89  QStringList columns;
90  QList<RecentRequestEntry> list;
91  int64_t nReceiveRequestsMaxId{0};
92 
94  void updateAmountColumnTitle();
96  QString getAmountTitle();
97 };
98 
99 #endif // BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
Model for list of recently generated payment requests / bitcoin: URIs.
RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder)
SERIALIZE_METHODS(RecentRequestEntry, obj)
int64_t id
QDateTime date
QList< RecentRequestEntry > list
static const int CURRENT_VERSION
SendCoinsRecipient recipient
Qt::SortOrder order
const RecentRequestEntry & entry(int row) const
int nVersion
int flags
Definition: bitcoin-tx.cpp:509
Interface to Bitcoin wallet from Qt view code.
Definition: walletmodel.h:51
static int count
Definition: tests.c:35
#define SER_READ(obj, code)
Definition: serialize.h:173
int column
#define SER_WRITE(obj, code)
Definition: serialize.h:174
#define READWRITE(...)
Definition: serialize.h:171
RecentRequestEntry()