feather/src/model/CoinsProxyModel.cpp

42 lines
1.2 KiB
C++
Raw Normal View History

// SPDX-License-Identifier: BSD-3-Clause
2020-12-26 19:56:06 +00:00
// Copyright (c) 2020-2021, The Monero Project.
#include "CoinsProxyModel.h"
#include "CoinsModel.h"
#include "libwalletqt/CoinsInfo.h"
CoinsProxyModel::CoinsProxyModel(QObject *parent, Coins *coins)
2021-06-28 17:20:16 +00:00
: QSortFilterProxyModel(parent)
, m_coins(coins)
, m_searchRegExp("")
{
2021-06-28 17:20:16 +00:00
m_searchRegExp.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
setSortRole(Qt::UserRole);
}
2021-06-28 17:20:16 +00:00
void CoinsProxyModel::setShowSpent(const bool showSpent) {
m_showSpent = showSpent;
invalidateFilter();
}
void CoinsProxyModel::setSearchFilter(const QString &searchString) {
m_searchRegExp.setPattern(searchString);
invalidateFilter();
}
bool CoinsProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
2021-06-28 17:20:16 +00:00
CoinsInfo* coin = m_coins->coin(sourceRow);
2021-07-02 15:52:03 +00:00
if (!m_showSpent && coin->spent()) {
return false;
}
2021-06-28 17:20:16 +00:00
if (!m_searchRegExp.pattern().isEmpty()) {
return coin->pubKey().contains(m_searchRegExp) || coin->address().contains(m_searchRegExp)
2021-07-02 15:03:18 +00:00
|| coin->hash().contains(m_searchRegExp) || coin->addressLabel().contains(m_searchRegExp)
|| coin->description().contains(m_searchRegExp);
2021-06-28 17:20:16 +00:00
}
2021-07-02 15:52:03 +00:00
return true;
}