Bitcoin
recentrequeststablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2018 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 
8 #include <qt/walletmodel.h>
9 
10 #include <QAbstractTableModel>
11 #include <QStringList>
12 #include <QDateTime>
13 
15 {
16 public:
18 
19  static const int CURRENT_VERSION = 1;
20  int nVersion;
22  QDateTime date;
24 
26 
27  template <typename Stream, typename Operation>
28  inline void SerializationOp(Stream& s, Operation ser_action) {
29  unsigned int nDate = date.toTime_t();
30 
31  READWRITE(this->nVersion);
32  READWRITE(id);
33  READWRITE(nDate);
35 
36  if (ser_action.ForRead())
37  date = QDateTime::fromTime_t(nDate);
38  }
39 };
40 
42 {
43 public:
44  RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder):
45  column(nColumn), order(fOrder) {}
47 
48 private:
49  int column;
50  Qt::SortOrder order;
51 };
52 
56 class RecentRequestsTableModel: public QAbstractTableModel
57 {
58  Q_OBJECT
59 
60 public:
61  explicit RecentRequestsTableModel(WalletModel *parent);
63 
64  enum ColumnIndex {
65  Date = 0,
66  Label = 1,
67  Message = 2,
68  Amount = 3,
70  };
71 
74  int rowCount(const QModelIndex &parent) const;
75  int columnCount(const QModelIndex &parent) const;
76  QVariant data(const QModelIndex &index, int role) const;
77  bool setData(const QModelIndex &index, const QVariant &value, int role);
78  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
79  QModelIndex index(int row, int column, const QModelIndex &parent) const;
80  bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
81  Qt::ItemFlags flags(const QModelIndex &index) const;
84  const RecentRequestEntry &entry(int row) const { return list[row]; }
85  void addNewRequest(const SendCoinsRecipient &recipient);
86  void addNewRequest(const std::string &recipient);
87  void addNewRequest(RecentRequestEntry &recipient);
88 
89 public Q_SLOTS:
90  void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
91  void updateDisplayUnit();
92 
93 private:
95  QStringList columns;
96  QList<RecentRequestEntry> list;
98 
102  QString getAmountTitle();
103 };
104 
105 #endif // BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
int rowCount(const QModelIndex &parent) const
Definition: recentrequeststablemodel.cpp:35
int64_t id
Definition: recentrequeststablemodel.h:21
RecentRequestsTableModel(WalletModel *parent)
Definition: recentrequeststablemodel.cpp:15
QDateTime date
Definition: recentrequeststablemodel.h:22
Definition: walletmodel.h:125
RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder)
Definition: recentrequeststablemodel.h:44
Definition: recentrequeststablemodel.h:41
Definition: recentrequeststablemodel.h:66
QVariant headerData(int section, Qt::Orientation orientation, int role) const
Definition: recentrequeststablemodel.cpp:101
static const int CURRENT_VERSION
Definition: recentrequeststablemodel.h:19
QStringList columns
Definition: recentrequeststablemodel.h:95
Definition: recentrequeststablemodel.h:67
void updateAmountColumnTitle()
Definition: recentrequeststablemodel.cpp:114
void addNewRequest(const SendCoinsRecipient &recipient)
Definition: recentrequeststablemodel.cpp:161
QVariant data(const QModelIndex &index, int role) const
Definition: recentrequeststablemodel.cpp:49
const RecentRequestEntry & entry(int row) const
Definition: recentrequeststablemodel.h:84
ADD_SERIALIZE_METHODS
Definition: recentrequeststablemodel.h:25
Definition: recentrequeststablemodel.h:69
Qt::ItemFlags flags(const QModelIndex &index) const
Definition: recentrequeststablemodel.cpp:155
Definition: recentrequeststablemodel.h:68
Definition: recentrequeststablemodel.h:65
QModelIndex index(int row, int column, const QModelIndex &parent) const
Definition: recentrequeststablemodel.cpp:126
int nVersion
Definition: recentrequeststablemodel.h:20
int columnCount(const QModelIndex &parent) const
Definition: recentrequeststablemodel.cpp:42
int column
Definition: recentrequeststablemodel.h:49
bool setData(const QModelIndex &index, const QVariant &value, int role)
Definition: recentrequeststablemodel.cpp:96
QString getAmountTitle()
Definition: recentrequeststablemodel.cpp:121
int64_t nReceiveRequestsMaxId
Definition: recentrequeststablemodel.h:97
RecentRequestEntry()
Definition: recentrequeststablemodel.h:17
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex())
Definition: recentrequeststablemodel.cpp:133
~RecentRequestsTableModel()
Definition: recentrequeststablemodel.cpp:30
ColumnIndex
Definition: recentrequeststablemodel.h:64
static int count
Definition: tests.c:45
WalletModel * walletModel
Definition: recentrequeststablemodel.h:94
signed long long int64_t
Definition: stdint.h:18
Qt::SortOrder order
Definition: recentrequeststablemodel.h:50
Definition: recentrequeststablemodel.h:14
SendCoinsRecipient recipient
Definition: recentrequeststablemodel.h:23
uint32_t left(uint32_t x)
Definition: sha1.cpp:28
bool operator()(RecentRequestEntry &left, RecentRequestEntry &right) const
Definition: recentrequeststablemodel.cpp:214
QList< RecentRequestEntry > list
Definition: recentrequeststablemodel.h:96
Definition: recentrequeststablemodel.h:56
#define READWRITE(...)
Definition: serialize.h:184
void sort(int column, Qt::SortOrder order=Qt::AscendingOrder)
Definition: recentrequeststablemodel.cpp:203
void SerializationOp(Stream &s, Operation ser_action)
Definition: recentrequeststablemodel.h:28
Definition: walletmodel.h:54
void updateDisplayUnit()
Definition: recentrequeststablemodel.cpp:209