Skip to content

Commit

Permalink
Merge bitcoin-core/gui#593: Getting ready to Qt 6 (8/n). Use `QRegula…
Browse files Browse the repository at this point in the history
…rExpression` in `AddressBookSortFilterProxyModel` class

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

Pull request description:

  This is a step in [migration](bitcoin#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](bitcoin-core/gui@e280087) on Ubuntu 21.10 Qt 5.15.2
  promag:
    Tested ACK e280087 with Qt6 on macOS 12 M1.
  w0xlt:
    tACK bitcoin-core/gui@e280087 on Ubuntu 21.10 Qt 5.15.2
  jarolrod:
    Tested ACK bitcoin-core/gui@e280087 on M1 mac, x86 mac, x86 Linux with Qt5 and separately with Qt6

Tree-SHA512: 664baacc1504deb2f7fa651ea4a44f3942f5c9058befe4d2ce292beed032d4b1697710cfd10c0909602d8a4a6eeb680414e4a1f56d2038478c1ae2f34965d74f
  • Loading branch information
hebasto authored and jagdeep sidhu committed May 28, 2022
1 parent c58ab27 commit c24c674
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 9 deletions.
18 changes: 12 additions & 6 deletions src/qt/addressbookpage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -46,12 +51,13 @@ class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel

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));
}
};

Expand Down
52 changes: 49 additions & 3 deletions src/qt/test/addressbooktests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <chrono>

#include <QApplication>
#include <QLineEdit>
#include <QMessageBox>
#include <QTableView>
#include <QTimer>
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit c24c674

Please sign in to comment.