Bitcoin
transactiontablemodel.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_TRANSACTIONTABLEMODEL_H
6 #define BITCOIN_QT_TRANSACTIONTABLEMODEL_H
7 
8 #include <qt/bitcoinunits.h>
9 
10 #include <QAbstractTableModel>
11 #include <QStringList>
12 
13 #include <memory>
14 
15 namespace interfaces {
16 class Handler;
17 }
18 
19 class PlatformStyle;
20 class TransactionRecord;
22 class WalletModel;
23 
26 class TransactionTableModel : public QAbstractTableModel
27 {
28  Q_OBJECT
29 
30 public:
31  explicit TransactionTableModel(const PlatformStyle *platformStyle, WalletModel *parent = nullptr);
33 
34  enum ColumnIndex {
35  Status = 0,
36  Watchonly = 1,
37  Date = 2,
38  Type = 3,
39  ToAddress = 4,
40  Amount = 5
41  };
42 
46  enum RoleIndex {
48  TypeRole = Qt::UserRole,
77  };
78 
79  int rowCount(const QModelIndex &parent) const;
80  int columnCount(const QModelIndex &parent) const;
81  QVariant data(const QModelIndex &index, int role) const;
82  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
83  QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const;
85 
86 private:
88  std::unique_ptr<interfaces::Handler> m_handler_transaction_changed;
89  std::unique_ptr<interfaces::Handler> m_handler_show_progress;
90  QStringList columns;
94 
97 
98  QString lookupAddress(const std::string &address, bool tooltip) const;
99  QVariant addressColor(const TransactionRecord *wtx) const;
100  QString formatTxStatus(const TransactionRecord *wtx) const;
101  QString formatTxDate(const TransactionRecord *wtx) const;
102  QString formatTxType(const TransactionRecord *wtx) const;
103  QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const;
104  QString formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true, BitcoinUnits::SeparatorStyle separators=BitcoinUnits::separatorStandard) const;
105  QString formatTooltip(const TransactionRecord *rec) const;
106  QVariant txStatusDecoration(const TransactionRecord *wtx) const;
107  QVariant txWatchonlyDecoration(const TransactionRecord *wtx) const;
108  QVariant txAddressDecoration(const TransactionRecord *wtx) const;
109 
110 public Q_SLOTS:
111  /* New transaction, or transaction changed status */
112  void updateTransaction(const QString &hash, int status, bool showTransaction);
113  void updateConfirmations();
114  void updateDisplayUnit();
117  /* Needed to update fProcessingQueuedTransactions through a QueuedConnection */
119 
120  friend class TransactionTablePriv;
121 };
122 
123 #endif // BITCOIN_QT_TRANSACTIONTABLEMODEL_H
Definition: transactiontablemodel.h:50
Definition: transactiontablemodel.h:54
Definition: transactiontablemodel.h:38
Definition: transactiontablemodel.h:72
Definition: transactiontablemodel.cpp:55
Definition: walletmodel.h:125
Definition: transactiontablemodel.h:36
QVariant data(const QModelIndex &index, int role) const
Definition: transactiontablemodel.cpp:489
QVariant headerData(int section, Qt::Orientation orientation, int role) const
Definition: transactiontablemodel.cpp:627
bool processingQueuedTransactions() const
Definition: transactiontablemodel.h:84
Definition: transactiontablemodel.h:68
void updateConfirmations()
Definition: transactiontablemodel.cpp:252
QString formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true, BitcoinUnits::SeparatorStyle separators=BitcoinUnits::separatorStandard) const
Definition: transactiontablemodel.cpp:421
TransactionTableModel(const PlatformStyle *platformStyle, WalletModel *parent=nullptr)
Definition: transactiontablemodel.cpp:216
Definition: transactiontablemodel.h:48
RoleIndex
Definition: transactiontablemodel.h:46
QVariant txAddressDecoration(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:359
Definition: transactiontablemodel.h:39
std::unique_ptr< interfaces::Handler > m_handler_transaction_changed
Definition: transactiontablemodel.h:88
void updateDisplayUnit()
Definition: transactiontablemodel.cpp:671
void updateTransaction(const QString &hash, int status, bool showTransaction)
Definition: transactiontablemodel.cpp:244
void setProcessingQueuedTransactions(bool value)
Definition: transactiontablemodel.h:118
Definition: transactiontablemodel.h:74
Definition: transactiontablemodel.h:35
QString formatTxStatus(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:274
Definition: dummywallet.cpp:11
std::unique_ptr< interfaces::Handler > m_handler_show_progress
Definition: transactiontablemodel.h:89
QVariant txWatchonlyDecoration(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:470
SeparatorStyle
Definition: bitcoinunits.h:65
QVariant txStatusDecoration(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:434
Definition: bitcoinunits.h:68
int columnCount(const QModelIndex &parent) const
Definition: transactiontablemodel.cpp:268
void unsubscribeFromCoreSignals()
Definition: transactiontablemodel.cpp:753
bool fProcessingQueuedTransactions
Definition: transactiontablemodel.h:92
void updateAmountColumnTitle()
Definition: transactiontablemodel.cpp:238
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
Definition: transactiontablemodel.cpp:660
ColumnIndex
Definition: transactiontablemodel.h:34
QString lookupAddress(const std::string &address, bool tooltip) const
Definition: transactiontablemodel.cpp:324
Definition: transactiontablemodel.h:76
QString formatTxType(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:339
Definition: transactiontablemodel.h:58
Definition: transactiontablemodel.h:70
QString formatTooltip(const TransactionRecord *rec) const
Definition: transactiontablemodel.cpp:478
Definition: transactiontablemodel.h:52
Definition: transactiontablemodel.h:37
Definition: transactiontablemodel.h:66
Definition: transactiontablemodel.h:60
Definition: transactiontablemodel.h:56
Definition: transactiontablemodel.h:62
~TransactionTableModel()
Definition: transactiontablemodel.cpp:231
WalletModel * walletModel
Definition: transactiontablemodel.h:87
Definition: platformstyle.h:13
Definition: transactiontablemodel.h:26
int rowCount(const QModelIndex &parent) const
Definition: transactiontablemodel.cpp:262
Definition: transactiontablemodel.h:64
TransactionTablePriv * priv
Definition: transactiontablemodel.h:91
QStringList columns
Definition: transactiontablemodel.h:90
void subscribeToCoreSignals()
Definition: transactiontablemodel.cpp:746
Definition: transactionrecord.h:73
const PlatformStyle * platformStyle
Definition: transactiontablemodel.h:93
QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const
Definition: transactiontablemodel.cpp:376
QString formatTxDate(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:312
QVariant addressColor(const TransactionRecord *wtx) const
Definition: transactiontablemodel.cpp:400
Definition: transactiontablemodel.h:40