Skip to content

Commit 8898906

Browse files
committed
Merge bitcoin-core/gui#593: Getting ready to Qt 6 (8/n). Use QRegularExpression 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
2 parents 1368634 + e280087 commit 8898906

File tree

2 files changed

+61
-9
lines changed

2 files changed

+61
-9
lines changed

src/qt/addressbookpage.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
#include <QMenu>
2020
#include <QMessageBox>
2121
#include <QSortFilterProxyModel>
22+
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
23+
#include <QRegularExpression>
24+
#else
25+
#include <QRegExp>
26+
#endif
2227

2328
class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel
2429
{
@@ -46,12 +51,13 @@ class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel
4651

4752
auto address = model->index(row, AddressTableModel::Address, parent);
4853

49-
if (filterRegExp().indexIn(model->data(address).toString()) < 0 &&
50-
filterRegExp().indexIn(model->data(label).toString()) < 0) {
51-
return false;
52-
}
53-
54-
return true;
54+
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
55+
const auto pattern = filterRegularExpression();
56+
#else
57+
const auto pattern = filterRegExp();
58+
#endif
59+
return (model->data(address).toString().contains(pattern) ||
60+
model->data(label).toString().contains(pattern));
5561
}
5662
};
5763

src/qt/test/addressbooktests.cpp

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <chrono>
2525

2626
#include <QApplication>
27+
#include <QLineEdit>
2728
#include <QMessageBox>
2829
#include <QTableView>
2930
#include <QTimer>
@@ -102,11 +103,13 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
102103
QString s_label("already here (s)");
103104

104105
// Define a new address (which should add to the address book successfully).
105-
QString new_address;
106+
QString new_address_a;
107+
QString new_address_b;
106108

107109
std::tie(r_key_dest, preexisting_r_address) = build_address();
108110
std::tie(s_key_dest, preexisting_s_address) = build_address();
109-
std::tie(std::ignore, new_address) = build_address();
111+
std::tie(std::ignore, new_address_a) = build_address();
112+
std::tie(std::ignore, new_address_b) = build_address();
110113

111114
{
112115
LOCK(wallet->cs_wallet);
@@ -159,9 +162,52 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
159162
// Submit a new address which should add successfully - we expect the
160163
// warning message to be blank.
161164
EditAddressAndSubmit(
162-
&editAddressDialog, QString("new"), new_address, QString(""));
165+
&editAddressDialog, QString("io - new A"), new_address_a, QString(""));
163166
check_addbook_size(3);
164167
QCOMPARE(table_view->model()->rowCount(), 2);
168+
169+
EditAddressAndSubmit(
170+
&editAddressDialog, QString("io - new B"), new_address_b, QString(""));
171+
check_addbook_size(4);
172+
QCOMPARE(table_view->model()->rowCount(), 3);
173+
174+
auto search_line = address_book.findChild<QLineEdit*>("searchLineEdit");
175+
176+
search_line->setText(r_label);
177+
QCOMPARE(table_view->model()->rowCount(), 0);
178+
179+
search_line->setText(s_label);
180+
QCOMPARE(table_view->model()->rowCount(), 1);
181+
182+
search_line->setText("io");
183+
QCOMPARE(table_view->model()->rowCount(), 2);
184+
185+
// Check wilcard "?".
186+
search_line->setText("io?new");
187+
QCOMPARE(table_view->model()->rowCount(), 0);
188+
search_line->setText("io???new");
189+
QCOMPARE(table_view->model()->rowCount(), 2);
190+
191+
// Check wilcard "*".
192+
search_line->setText("io*new");
193+
QCOMPARE(table_view->model()->rowCount(), 2);
194+
search_line->setText("*");
195+
QCOMPARE(table_view->model()->rowCount(), 3);
196+
197+
search_line->setText(preexisting_r_address);
198+
QCOMPARE(table_view->model()->rowCount(), 0);
199+
200+
search_line->setText(preexisting_s_address);
201+
QCOMPARE(table_view->model()->rowCount(), 1);
202+
203+
search_line->setText(new_address_a);
204+
QCOMPARE(table_view->model()->rowCount(), 1);
205+
206+
search_line->setText(new_address_b);
207+
QCOMPARE(table_view->model()->rowCount(), 1);
208+
209+
search_line->setText("");
210+
QCOMPARE(table_view->model()->rowCount(), 3);
165211
}
166212

167213
} // namespace

0 commit comments

Comments
 (0)