Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
qt
transactionfilterproxy.cpp
Go to the documentation of this file.
1
// Copyright (c) 2011-present 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
#include <
qt/transactionfilterproxy.h
>
6
7
#include <
qt/transactiontablemodel.h
>
8
#include <
qt/transactionrecord.h
>
9
10
#include <algorithm>
11
#include <cstdlib>
12
#include <optional>
13
14
TransactionFilterProxy::TransactionFilterProxy
(QObject* parent)
15
: QSortFilterProxyModel(parent)
16
{
17
}
18
19
bool
TransactionFilterProxy::filterAcceptsRow
(
int
sourceRow,
const
QModelIndex &sourceParent)
const
20
{
21
QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
22
23
int
status = index.data(
TransactionTableModel::StatusRole
).toInt();
24
if
(!
showInactive
&& status ==
TransactionStatus::Conflicted
)
25
return
false
;
26
27
int
type = index.data(
TransactionTableModel::TypeRole
).toInt();
28
if
(!(
TYPE
(type) &
typeFilter
))
29
return
false
;
30
31
QDateTime datetime = index.data(
TransactionTableModel::DateRole
).toDateTime();
32
if
(
dateFrom
&& datetime < *
dateFrom
)
return
false
;
33
if
(
dateTo
&& datetime > *
dateTo
)
return
false
;
34
35
QString address = index.data(
TransactionTableModel::AddressRole
).toString();
36
QString label = index.data(
TransactionTableModel::LabelRole
).toString();
37
QString txid = index.data(
TransactionTableModel::TxHashRole
).toString();
38
if
(!address.contains(
m_search_string
, Qt::CaseInsensitive) &&
39
! label.contains(
m_search_string
, Qt::CaseInsensitive) &&
40
! txid.contains(
m_search_string
, Qt::CaseInsensitive)) {
41
return
false
;
42
}
43
44
qint64 amount = llabs(index.data(
TransactionTableModel::AmountRole
).toLongLong());
45
if
(amount <
minAmount
)
46
return
false
;
47
48
return
true
;
49
}
50
51
void
TransactionFilterProxy::setDateRange
(
const
std::optional<QDateTime>& from,
const
std::optional<QDateTime>& to)
52
{
53
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
54
beginFilterChange();
55
#endif
56
57
dateFrom
= from;
58
dateTo
= to;
59
60
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
61
endFilterChange(QSortFilterProxyModel::Direction::Rows);
62
#else
63
invalidateFilter();
64
#endif
65
}
66
67
void
TransactionFilterProxy::setSearchString
(
const
QString &search_string)
68
{
69
if
(
m_search_string
== search_string)
return
;
70
71
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
72
beginFilterChange();
73
#endif
74
75
m_search_string
= search_string;
76
77
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
78
endFilterChange(QSortFilterProxyModel::Direction::Rows);
79
#else
80
invalidateFilter();
81
#endif
82
}
83
84
void
TransactionFilterProxy::setTypeFilter
(quint32 modes)
85
{
86
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
87
beginFilterChange();
88
#endif
89
90
this->
typeFilter
= modes;
91
92
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
93
endFilterChange(QSortFilterProxyModel::Direction::Rows);
94
#else
95
invalidateFilter();
96
#endif
97
}
98
99
void
TransactionFilterProxy::setMinAmount
(
const
CAmount
& minimum)
100
{
101
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
102
beginFilterChange();
103
#endif
104
105
this->
minAmount
= minimum;
106
107
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
108
endFilterChange(QSortFilterProxyModel::Direction::Rows);
109
#else
110
invalidateFilter();
111
#endif
112
}
113
114
void
TransactionFilterProxy::setShowInactive
(
bool
_showInactive)
115
{
116
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
117
beginFilterChange();
118
#endif
119
120
this->
showInactive
= _showInactive;
121
122
#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0)
123
endFilterChange(QSortFilterProxyModel::Direction::Rows);
124
#else
125
invalidateFilter();
126
#endif
127
}
CAmount
int64_t CAmount
Amount in satoshis (Can be negative).
Definition
amount.h:12
TransactionFilterProxy::dateFrom
std::optional< QDateTime > dateFrom
Definition
transactionfilterproxy.h:44
TransactionFilterProxy::setMinAmount
void setMinAmount(const CAmount &minimum)
Definition
transactionfilterproxy.cpp:99
TransactionFilterProxy::typeFilter
quint32 typeFilter
Definition
transactionfilterproxy.h:47
TransactionFilterProxy::setDateRange
void setDateRange(const std::optional< QDateTime > &from, const std::optional< QDateTime > &to)
Filter transactions between date range.
Definition
transactionfilterproxy.cpp:51
TransactionFilterProxy::m_search_string
QString m_search_string
Definition
transactionfilterproxy.h:46
TransactionFilterProxy::dateTo
std::optional< QDateTime > dateTo
Definition
transactionfilterproxy.h:45
TransactionFilterProxy::filterAcceptsRow
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
Definition
transactionfilterproxy.cpp:19
TransactionFilterProxy::TYPE
static quint32 TYPE(int type)
Definition
transactionfilterproxy.h:26
TransactionFilterProxy::setShowInactive
void setShowInactive(bool showInactive)
Set whether to show conflicted transactions.
Definition
transactionfilterproxy.cpp:114
TransactionFilterProxy::setSearchString
void setSearchString(const QString &)
Definition
transactionfilterproxy.cpp:67
TransactionFilterProxy::showInactive
bool showInactive
Definition
transactionfilterproxy.h:49
TransactionFilterProxy::setTypeFilter
void setTypeFilter(quint32 modes)
Definition
transactionfilterproxy.cpp:84
TransactionFilterProxy::TransactionFilterProxy
TransactionFilterProxy(QObject *parent=nullptr)
Definition
transactionfilterproxy.cpp:14
TransactionFilterProxy::minAmount
CAmount minAmount
Definition
transactionfilterproxy.h:48
TransactionTableModel::LabelRole
@ LabelRole
Label of address related to transaction.
Definition
transactiontablemodel.h:55
TransactionTableModel::TypeRole
@ TypeRole
Type of transaction.
Definition
transactiontablemodel.h:47
TransactionTableModel::StatusRole
@ StatusRole
Transaction status (TransactionRecord::Status).
Definition
transactiontablemodel.h:69
TransactionTableModel::DateRole
@ DateRole
Date and time this transaction was created.
Definition
transactiontablemodel.h:49
TransactionTableModel::TxHashRole
@ TxHashRole
Transaction hash.
Definition
transactiontablemodel.h:59
TransactionTableModel::AddressRole
@ AddressRole
Address of transaction.
Definition
transactiontablemodel.h:53
TransactionTableModel::AmountRole
@ AmountRole
Net amount of transaction.
Definition
transactiontablemodel.h:57
TransactionStatus::Conflicted
@ Conflicted
Conflicts with other transaction or mempool.
Definition
transactionrecord.h:30
transactionfilterproxy.h
transactionrecord.h
transactiontablemodel.h
Generated on
for Bitcoin Core by
1.17.0