Skip to content

Commit 9ac4eb6

Browse files
hebastoknst
authored andcommitted
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
1 parent 83a0ab1 commit 9ac4eb6

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
@@ -21,6 +21,11 @@
2121
#include <QMenu>
2222
#include <QMessageBox>
2323
#include <QSortFilterProxyModel>
24+
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
25+
#include <QRegularExpression>
26+
#else
27+
#include <QRegExp>
28+
#endif
2429

2530
class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel
2631
{
@@ -48,12 +53,13 @@ class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel
4853

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

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

src/qt/test/addressbooktests.cpp

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

2525
#include <QApplication>
26+
#include <QLineEdit>
2627
#include <QMessageBox>
2728
#include <QTableView>
2829
#include <QTimer>
@@ -98,11 +99,13 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
9899
QString s_label("already here (s)");
99100

100101
// Define a new address (which should add to the address book successfully).
101-
QString new_address;
102+
QString new_address_a;
103+
QString new_address_b;
102104

103105
std::tie(r_key_dest, preexisting_r_address) = build_address();
104106
std::tie(s_key_dest, preexisting_s_address) = build_address();
105-
std::tie(std::ignore, new_address) = build_address();
107+
std::tie(std::ignore, new_address_a) = build_address();
108+
std::tie(std::ignore, new_address_b) = build_address();
106109

107110
{
108111
LOCK(wallet->cs_wallet);
@@ -154,9 +157,52 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
154157
// Submit a new address which should add successfully - we expect the
155158
// warning message to be blank.
156159
EditAddressAndSubmit(
157-
&editAddressDialog, QString("new"), new_address, QString(""));
160+
&editAddressDialog, QString("io - new A"), new_address_a, QString(""));
158161
check_addbook_size(3);
159162
QCOMPARE(table_view->model()->rowCount(), 2);
163+
164+
EditAddressAndSubmit(
165+
&editAddressDialog, QString("io - new B"), new_address_b, QString(""));
166+
check_addbook_size(4);
167+
QCOMPARE(table_view->model()->rowCount(), 3);
168+
169+
auto search_line = address_book.findChild<QLineEdit*>("searchLineEdit");
170+
171+
search_line->setText(r_label);
172+
QCOMPARE(table_view->model()->rowCount(), 0);
173+
174+
search_line->setText(s_label);
175+
QCOMPARE(table_view->model()->rowCount(), 1);
176+
177+
search_line->setText("io");
178+
QCOMPARE(table_view->model()->rowCount(), 2);
179+
180+
// Check wilcard "?".
181+
search_line->setText("io?new");
182+
QCOMPARE(table_view->model()->rowCount(), 0);
183+
search_line->setText("io???new");
184+
QCOMPARE(table_view->model()->rowCount(), 2);
185+
186+
// Check wilcard "*".
187+
search_line->setText("io*new");
188+
QCOMPARE(table_view->model()->rowCount(), 2);
189+
search_line->setText("*");
190+
QCOMPARE(table_view->model()->rowCount(), 3);
191+
192+
search_line->setText(preexisting_r_address);
193+
QCOMPARE(table_view->model()->rowCount(), 0);
194+
195+
search_line->setText(preexisting_s_address);
196+
QCOMPARE(table_view->model()->rowCount(), 1);
197+
198+
search_line->setText(new_address_a);
199+
QCOMPARE(table_view->model()->rowCount(), 1);
200+
201+
search_line->setText(new_address_b);
202+
QCOMPARE(table_view->model()->rowCount(), 1);
203+
204+
search_line->setText("");
205+
QCOMPARE(table_view->model()->rowCount(), 3);
160206
}
161207

162208
} // namespace

0 commit comments

Comments
 (0)