Merge bitcoin-core/gui#593: Getting ready to Qt 6 (8/n). Use QRegularExpression in AddressBookSortFilterProxyModel class

e280087946 qt: Use `QRegularExpression` in `AddressBookSortFilterProxyModel` class (Hennadii Stepanov)
5c5d8f2465 qt, test: Add tests for searching in `AddressBookPage` dialog (Hennadii Stepanov)

Pull request description:

  This is a step in [migration](https://github.com/bitcoin/bitcoin/pull/24798) to Qt 6.

  Related:
  - bitcoin-core/gui#578
  - bitcoin-core/gui#585

  No behavior change. To ensure this, tests have been added.

ACKs for top commit:
  hebasto:
    > tACK [e280087](e280087946) on Ubuntu 21.10 Qt 5.15.2
  promag:
    Tested ACK e280087946 with Qt6 on macOS 12 M1.
  w0xlt:
    tACK e280087946 on Ubuntu 21.10 Qt 5.15.2
  jarolrod:
    Tested ACK e280087946 on M1 mac, x86 mac, x86 Linux with Qt5 and separately with Qt6

Tree-SHA512: 664baacc1504deb2f7fa651ea4a44f3942f5c9058befe4d2ce292beed032d4b1697710cfd10c0909602d8a4a6eeb680414e4a1f56d2038478c1ae2f34965d74f
This commit is contained in:
Hennadii Stepanov 2022-05-24 10:50:39 +02:00
commit 8898906370
No known key found for this signature in database
GPG key ID: 410108112E7EA81F
2 changed files with 61 additions and 9 deletions

View file

@ -19,6 +19,11 @@
#include <QMenu>
#include <QMessageBox>
#include <QSortFilterProxyModel>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#include <QRegularExpression>
#else
#include <QRegExp>
#endif
class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel
{
@ -46,12 +51,13 @@ protected:
auto address = model->index(row, AddressTableModel::Address, parent);
if (filterRegExp().indexIn(model->data(address).toString()) < 0 &&
filterRegExp().indexIn(model->data(label).toString()) < 0) {
return false;
}
return true;
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
const auto pattern = filterRegularExpression();
#else
const auto pattern = filterRegExp();
#endif
return (model->data(address).toString().contains(pattern) ||
model->data(label).toString().contains(pattern));
}
};

View file

@ -24,6 +24,7 @@
#include <chrono>
#include <QApplication>
#include <QLineEdit>
#include <QMessageBox>
#include <QTableView>
#include <QTimer>
@ -102,11 +103,13 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
QString s_label("already here (s)");
// Define a new address (which should add to the address book successfully).
QString new_address;
QString new_address_a;
QString new_address_b;
std::tie(r_key_dest, preexisting_r_address) = build_address();
std::tie(s_key_dest, preexisting_s_address) = build_address();
std::tie(std::ignore, new_address) = build_address();
std::tie(std::ignore, new_address_a) = build_address();
std::tie(std::ignore, new_address_b) = build_address();
{
LOCK(wallet->cs_wallet);
@ -159,9 +162,52 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
// Submit a new address which should add successfully - we expect the
// warning message to be blank.
EditAddressAndSubmit(
&editAddressDialog, QString("new"), new_address, QString(""));
&editAddressDialog, QString("io - new A"), new_address_a, QString(""));
check_addbook_size(3);
QCOMPARE(table_view->model()->rowCount(), 2);
EditAddressAndSubmit(
&editAddressDialog, QString("io - new B"), new_address_b, QString(""));
check_addbook_size(4);
QCOMPARE(table_view->model()->rowCount(), 3);
auto search_line = address_book.findChild<QLineEdit*>("searchLineEdit");
search_line->setText(r_label);
QCOMPARE(table_view->model()->rowCount(), 0);
search_line->setText(s_label);
QCOMPARE(table_view->model()->rowCount(), 1);
search_line->setText("io");
QCOMPARE(table_view->model()->rowCount(), 2);
// Check wilcard "?".
search_line->setText("io?new");
QCOMPARE(table_view->model()->rowCount(), 0);
search_line->setText("io???new");
QCOMPARE(table_view->model()->rowCount(), 2);
// Check wilcard "*".
search_line->setText("io*new");
QCOMPARE(table_view->model()->rowCount(), 2);
search_line->setText("*");
QCOMPARE(table_view->model()->rowCount(), 3);
search_line->setText(preexisting_r_address);
QCOMPARE(table_view->model()->rowCount(), 0);
search_line->setText(preexisting_s_address);
QCOMPARE(table_view->model()->rowCount(), 1);
search_line->setText(new_address_a);
QCOMPARE(table_view->model()->rowCount(), 1);
search_line->setText(new_address_b);
QCOMPARE(table_view->model()->rowCount(), 1);
search_line->setText("");
QCOMPARE(table_view->model()->rowCount(), 3);
}
} // namespace