diff --git a/src/qt/transactionfilterproxy.h b/src/qt/transactionfilterproxy.h --- a/src/qt/transactionfilterproxy.h +++ b/src/qt/transactionfilterproxy.h @@ -41,7 +41,7 @@ }; void setDateRange(const QDateTime &from, const QDateTime &to); - void setAddressPrefix(const QString &addrPrefix); + void setSearchString(const QString &); /** * @note Type filter takes a bit field created with TYPE() or ALL_TYPES */ @@ -68,7 +68,7 @@ private: QDateTime dateFrom; QDateTime dateTo; - QString addrPrefix; + QString m_search_string; quint32 typeFilter; WatchOnlyFilter watchOnlyFilter; Amount minAmount; diff --git a/src/qt/transactionfilterproxy.cpp b/src/qt/transactionfilterproxy.cpp --- a/src/qt/transactionfilterproxy.cpp +++ b/src/qt/transactionfilterproxy.cpp @@ -19,8 +19,9 @@ TransactionFilterProxy::TransactionFilterProxy(QObject *parent) : QSortFilterProxyModel(parent), dateFrom(MIN_DATE), dateTo(MAX_DATE), - addrPrefix(), typeFilter(ALL_TYPES), watchOnlyFilter(WatchOnlyFilter_All), - minAmount(), limitRows(-1), showInactive(true) {} + m_search_string(), typeFilter(ALL_TYPES), + watchOnlyFilter(WatchOnlyFilter_All), minAmount(), limitRows(-1), + showInactive(true) {} bool TransactionFilterProxy::filterAcceptsRow( int sourceRow, const QModelIndex &sourceParent) const { @@ -33,6 +34,7 @@ index.data(TransactionTableModel::WatchonlyRole).toBool(); QString address = index.data(TransactionTableModel::AddressRole).toString(); QString label = index.data(TransactionTableModel::LabelRole).toString(); + QString txid = index.data(TransactionTableModel::TxIDRole).toString(); Amount amount( int64_t( llabs(index.data(TransactionTableModel::AmountRole).toLongLong())) * @@ -54,8 +56,9 @@ if (datetime < dateFrom || datetime > dateTo) { return false; } - if (!address.contains(addrPrefix, Qt::CaseInsensitive) && - !label.contains(addrPrefix, Qt::CaseInsensitive)) { + if (!address.contains(m_search_string, Qt::CaseInsensitive) && + !label.contains(m_search_string, Qt::CaseInsensitive) && + !txid.contains(m_search_string, Qt::CaseInsensitive)) { return false; } if (amount < minAmount) { @@ -72,8 +75,11 @@ invalidateFilter(); } -void TransactionFilterProxy::setAddressPrefix(const QString &_addrPrefix) { - this->addrPrefix = _addrPrefix; +void TransactionFilterProxy::setSearchString(const QString &search_string) { + if (m_search_string == search_string) { + return; + } + m_search_string = search_string; invalidateFilter(); } diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -68,7 +68,7 @@ QComboBox *dateWidget; QComboBox *typeWidget; QComboBox *watchOnlyWidget; - QLineEdit *addressWidget; + QLineEdit *search_widget; QLineEdit *amountWidget; QMenu *contextMenu; @@ -116,7 +116,7 @@ void chooseType(int idx); void chooseWatchonly(int idx); void changedAmount(); - void changedPrefix(); + void changedSearch(); void exportClicked(); void focusTransaction(const QModelIndex &); void focusTransaction(const uint256 &txid); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -103,9 +103,10 @@ hlayout->addWidget(typeWidget); - addressWidget = new QLineEdit(this); - addressWidget->setPlaceholderText(tr("Enter address or label to search")); - hlayout->addWidget(addressWidget); + search_widget = new QLineEdit(this); + search_widget->setPlaceholderText( + tr("Enter address, transaction id, or label to search")); + hlayout->addWidget(search_widget); amountWidget = new QLineEdit(this); amountWidget->setPlaceholderText(tr("Min amount")); @@ -192,10 +193,10 @@ SLOT(start())); connect(amount_typing_delay, SIGNAL(timeout()), this, SLOT(changedAmount())); - connect(addressWidget, SIGNAL(textChanged(QString)), prefix_typing_delay, + connect(search_widget, SIGNAL(textChanged(QString)), prefix_typing_delay, SLOT(start())); connect(prefix_typing_delay, SIGNAL(timeout()), this, - SLOT(changedPrefix())); + SLOT(changedSearch())); connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex))); @@ -348,12 +349,12 @@ watchOnlyWidget->itemData(idx).toInt())); } -void TransactionView::changedPrefix() { +void TransactionView::changedSearch() { if (!transactionProxyModel) { return; } - transactionProxyModel->setAddressPrefix(addressWidget->text()); + transactionProxyModel->setSearchString(search_widget->text()); } void TransactionView::changedAmount() {