Add const to methods that do not modify the object for which it is called
[bitcoinplatinum.git] / src / qt / recentrequeststablemodel.h
blob0c02968f928fe6e59582cf99b72d205e1e67fa19
1 // Copyright (c) 2011-2016 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.
5 #ifndef BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
6 #define BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H
8 #include "walletmodel.h"
10 #include <QAbstractTableModel>
11 #include <QStringList>
12 #include <QDateTime>
14 class CWallet;
16 class RecentRequestEntry
18 public:
19 RecentRequestEntry() : nVersion(RecentRequestEntry::CURRENT_VERSION), id(0) { }
21 static const int CURRENT_VERSION = 1;
22 int nVersion;
23 int64_t id;
24 QDateTime date;
25 SendCoinsRecipient recipient;
27 ADD_SERIALIZE_METHODS;
29 template <typename Stream, typename Operation>
30 inline void SerializationOp(Stream& s, Operation ser_action) {
31 unsigned int nDate = date.toTime_t();
33 READWRITE(this->nVersion);
34 READWRITE(id);
35 READWRITE(nDate);
36 READWRITE(recipient);
38 if (ser_action.ForRead())
39 date = QDateTime::fromTime_t(nDate);
43 class RecentRequestEntryLessThan
45 public:
46 RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder):
47 column(nColumn), order(fOrder) {}
48 bool operator()(RecentRequestEntry &left, RecentRequestEntry &right) const;
50 private:
51 int column;
52 Qt::SortOrder order;
55 /** Model for list of recently generated payment requests / bitcoin: URIs.
56 * Part of wallet model.
58 class RecentRequestsTableModel: public QAbstractTableModel
60 Q_OBJECT
62 public:
63 explicit RecentRequestsTableModel(CWallet *wallet, WalletModel *parent);
64 ~RecentRequestsTableModel();
66 enum ColumnIndex {
67 Date = 0,
68 Label = 1,
69 Message = 2,
70 Amount = 3,
71 NUMBER_OF_COLUMNS
74 /** @name Methods overridden from QAbstractTableModel
75 @{*/
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;
84 /*@}*/
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);
91 public Q_SLOTS:
92 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
93 void updateDisplayUnit();
95 private:
96 WalletModel *walletModel;
97 QStringList columns;
98 QList<RecentRequestEntry> list;
99 int64_t nReceiveRequestsMaxId;
101 /** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */
102 void updateAmountColumnTitle();
103 /** Gets title for amount column including current display unit if optionsModel reference available. */
104 QString getAmountTitle();
107 #endif // BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H