Added Qt dependent macro for QSortFilterProxyModel::setFilterRegularExpression/setFilterRegExp

This commit is contained in:
thunder2 2025-07-21 01:04:24 +02:00
parent 13b294838b
commit fad7774767
8 changed files with 42 additions and 34 deletions

View file

@ -199,7 +199,7 @@ SharedFilesDialog::SharedFilesDialog(bool remote_mode, QWidget *parent)
tree_proxyModel->setSortRole(RetroshareDirModel::SortRole); tree_proxyModel->setSortRole(RetroshareDirModel::SortRole);
tree_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME); tree_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
tree_proxyModel->setFilterRole(RetroshareDirModel::FilterRole); tree_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
tree_proxyModel->setFilterRegExp(QRegExp(QString(SHARED_FILES_DIALOG_FILTER_STRING))) ; QSortFilterProxyModel_setFilterRegularExpression(tree_proxyModel, QString(SHARED_FILES_DIALOG_FILTER_STRING)) ;
flat_proxyModel = new SFDSortFilterProxyModel(flat_model, this); flat_proxyModel = new SFDSortFilterProxyModel(flat_model, this);
flat_proxyModel->setSourceModel(flat_model); flat_proxyModel->setSourceModel(flat_model);
@ -207,7 +207,7 @@ SharedFilesDialog::SharedFilesDialog(bool remote_mode, QWidget *parent)
flat_proxyModel->setSortRole(RetroshareDirModel::SortRole); flat_proxyModel->setSortRole(RetroshareDirModel::SortRole);
flat_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME); flat_proxyModel->sort(SHARED_FILES_DIALOG_COLUMN_NAME);
flat_proxyModel->setFilterRole(RetroshareDirModel::FilterRole); flat_proxyModel->setFilterRole(RetroshareDirModel::FilterRole);
flat_proxyModel->setFilterRegExp(QRegExp(QString(SHARED_FILES_DIALOG_FILTER_STRING))) ; QSortFilterProxyModel_setFilterRegularExpression(flat_proxyModel, QString(SHARED_FILES_DIALOG_FILTER_STRING)) ;
connect(ui.filterClearButton, SIGNAL(clicked()), this, SLOT(clearFilter())); connect(ui.filterClearButton, SIGNAL(clicked()), this, SLOT(clearFilter()));
connect(ui.filterStartButton, SIGNAL(clicked()), this, SLOT(startFilter())); connect(ui.filterStartButton, SIGNAL(clicked()), this, SLOT(startFilter()));

View file

@ -2647,5 +2647,5 @@ void TransfersDialog::filterChanged(const QString& /*text*/)
int filterColumn = ui.filterLineEdit->currentFilter(); int filterColumn = ui.filterLineEdit->currentFilter();
QString text = ui.filterLineEdit->text(); QString text = ui.filterLineEdit->text();
DLLFilterModel->setFilterKeyColumn(filterColumn); DLLFilterModel->setFilterKeyColumn(filterColumn);
DLLFilterModel->setFilterRegExp(text); QSortFilterProxyModel_setFilterRegularExpression(DLLFilterModel, text);
} }

View file

@ -231,7 +231,7 @@ IdDialog::IdDialog(QWidget *parent)
mProxyModel->setSortRole(RsIdentityListModel::SortRole); mProxyModel->setSortRole(RsIdentityListModel::SortRole);
mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
mProxyModel->setFilterRole(RsIdentityListModel::FilterRole); mProxyModel->setFilterRole(RsIdentityListModel::FilterRole);
mProxyModel->setFilterRegExp(QRegExp(RsIdentityListModel::FilterString)); QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, RsIdentityListModel::FilterString);
ui->idTreeWidget->setModel(mProxyModel); ui->idTreeWidget->setModel(mProxyModel);
//ui->idTreeWidget->setSelectionModel(new QItemSelectionModel(mProxyModel));// useless in Qt5. //ui->idTreeWidget->setSelectionModel(new QItemSelectionModel(mProxyModel));// useless in Qt5.

View file

@ -213,7 +213,7 @@ NewFriendList::NewFriendList(QWidget */*parent*/) : /* RsAutoUpdatePage(5000,par
mProxyModel->setSortRole(RsFriendListModel::SortRole); mProxyModel->setSortRole(RsFriendListModel::SortRole);
mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
mProxyModel->setFilterRole(RsFriendListModel::FilterRole); mProxyModel->setFilterRole(RsFriendListModel::FilterRole);
mProxyModel->setFilterRegExp(QRegExp(RsFriendListModel::FilterString)); QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, RsFriendListModel::FilterString);
ui->peerTreeWidget->setModel(mProxyModel); ui->peerTreeWidget->setModel(mProxyModel);
RSElidedItemDelegate *itemDelegate = new RSElidedItemDelegate(this); RSElidedItemDelegate *itemDelegate = new RSElidedItemDelegate(this);
@ -558,7 +558,7 @@ void NewFriendList::processSettings(bool load)
void NewFriendList::toggleSortByState(bool sort) void NewFriendList::toggleSortByState(bool sort)
{ {
mProxyModel->setSortByState(sort); mProxyModel->setSortByState(sort);
mProxyModel->setFilterRegExp(QRegExp(QString(RsFriendListModel::FilterString))) ;// triggers a re-display. QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, QString(RsFriendListModel::FilterString)) ;// triggers a re-display.
processSettings(false); processSettings(false);
} }
@ -1623,7 +1623,7 @@ bool NewFriendList::getOrCreateGroup(const std::string& name, uint flag, RsNodeG
void NewFriendList::setShowUnconnected(bool show) void NewFriendList::setShowUnconnected(bool show)
{ {
mProxyModel->setShowOfflineNodes(show); mProxyModel->setShowOfflineNodes(show);
mProxyModel->setFilterRegExp(QRegExp(QString(RsFriendListModel::FilterString))) ;// triggers a re-display. QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, QString(RsFriendListModel::FilterString)) ;// triggers a re-display.
} }
bool NewFriendList::isColumnVisible(int col) const bool NewFriendList::isColumnVisible(int col) const
@ -1682,7 +1682,7 @@ void NewFriendList::filterItems(const QString &text)
mModel->setFilter(RsFriendListModel::FILTER_TYPE_ID,lst); mModel->setFilter(RsFriendListModel::FILTER_TYPE_ID,lst);
// We do this in order to trigger a new filtering action in the proxy model. // We do this in order to trigger a new filtering action in the proxy model.
mProxyModel->setFilterRegExp(QRegExp(QString(RsFriendListModel::FilterString))) ; QSortFilterProxyModel_setFilterRegularExpression(mProxyModel, QString(RsFriendListModel::FilterString)) ;
if(!lst.empty()) if(!lst.empty())
ui->peerTreeWidget->expandAll(); ui->peerTreeWidget->expandAll();

View file

@ -264,7 +264,7 @@ GxsForumThreadWidget::GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget
ui->threadTreeWidget->setModel(mThreadProxyModel); ui->threadTreeWidget->setModel(mThreadProxyModel);
mThreadProxyModel->setFilterRole(RsGxsForumModel::FilterRole); mThreadProxyModel->setFilterRole(RsGxsForumModel::FilterRole);
mThreadProxyModel->setFilterRegExp(QRegExp(QString(RsGxsForumModel::FilterString))) ; QSortFilterProxyModel_setFilterRegularExpression(mThreadProxyModel, QString(RsGxsForumModel::FilterString)) ;
ui->threadTreeWidget->setSortingEnabled(true); ui->threadTreeWidget->setSortingEnabled(true);
@ -1854,7 +1854,7 @@ void GxsForumThreadWidget::filterItems(const QString& text)
mThreadModel->setFilter(filterColumn,lst,count) ; mThreadModel->setFilter(filterColumn,lst,count) ;
// We do this in order to trigger a new filtering action in the proxy model. // We do this in order to trigger a new filtering action in the proxy model.
mThreadProxyModel->setFilterRegExp(QRegExp(QString(RsGxsForumModel::FilterString))) ; QSortFilterProxyModel_setFilterRegularExpression(mThreadProxyModel, QString(RsGxsForumModel::FilterString)) ;
if(!lst.empty()) if(!lst.empty())
ui->threadTreeWidget->expandAll(); ui->threadTreeWidget->expandAll();

View file

@ -157,7 +157,7 @@ MessagesDialog::MessagesDialog(QWidget *parent)
mMessageProxyModel->setSortRole(RsMessageModel::SortRole); mMessageProxyModel->setSortRole(RsMessageModel::SortRole);
mMessageProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); mMessageProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
mMessageProxyModel->setFilterRole(RsMessageModel::FilterRole); mMessageProxyModel->setFilterRole(RsMessageModel::FilterRole);
mMessageProxyModel->setFilterRegExp(QRegExp(RsMessageModel::FilterString)); QSortFilterProxyModel_setFilterRegularExpression(mMessageProxyModel, RsMessageModel::FilterString);
ui.messageTreeWidget->setModel(mMessageProxyModel); ui.messageTreeWidget->setModel(mMessageProxyModel);
@ -1016,7 +1016,7 @@ void MessagesDialog::changeQuickView(int newrow)
} }
mMessageModel->setQuickViewFilter(f); mMessageModel->setQuickViewFilter(f);
mMessageProxyModel->setFilterRegExp(QRegExp(RsMessageModel::FilterString)); // this triggers the update of the proxy model QSortFilterProxyModel_setFilterRegularExpression(mMessageProxyModel, RsMessageModel::FilterString); // this triggers the update of the proxy model
} }
// click in messageTreeWidget // click in messageTreeWidget
@ -1263,7 +1263,7 @@ void MessagesDialog::filterChanged(const QString& text)
} }
mMessageModel->setFilter(f,items); mMessageModel->setFilter(f,items);
mMessageProxyModel->setFilterRegExp(QRegExp(RsMessageModel::FilterString)); // this triggers the update of the proxy model QSortFilterProxyModel_setFilterRegularExpression(mMessageProxyModel, RsMessageModel::FilterString); // this triggers the update of the proxy model
QCoreApplication::processEvents(); QCoreApplication::processEvents();
} }
@ -1289,7 +1289,7 @@ void MessagesDialog::filterColumnChanged(int column)
QStringList items = ui.filterLineEdit->text().split(' ',QtSkipEmptyParts); QStringList items = ui.filterLineEdit->text().split(' ',QtSkipEmptyParts);
mMessageModel->setFilter(f,items); mMessageModel->setFilter(f,items);
mMessageProxyModel->setFilterRegExp(QRegExp(RsMessageModel::FilterString)); // this triggers the update of the proxy model QSortFilterProxyModel_setFilterRegularExpression(mMessageProxyModel, RsMessageModel::FilterString); // this triggers the update of the proxy model
// save index // save index
Settings->setValueToGroup("MessageDialog", "filterColumn", column); Settings->setValueToGroup("MessageDialog", "filterColumn", column);

View file

@ -28,6 +28,8 @@
#include <QTimer> #include <QTimer>
#include <QStringListModel> #include <QStringListModel>
#include <QProgressDialog> #include <QProgressDialog>
#include <QRegularExpression>
#include <QRegularExpressionValidator>
#define IMAGE_LEDOFF ":/images/ledoff1.png" #define IMAGE_LEDOFF ":/images/ledoff1.png"
#define IMAGE_LEDON ":/images/ledon1.png" #define IMAGE_LEDON ":/images/ledon1.png"
@ -47,8 +49,8 @@ JsonApiPage::JsonApiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/)
// This limits the possible tokens to alphanumeric // This limits the possible tokens to alphanumeric
QString anRange = "[a-zA-Z0-9]+"; QString anRange = "[a-zA-Z0-9]+";
QRegExp anRegex ("^" + anRange + ":" + anRange + "$"); QRegularExpression anRegex ("^" + anRange + ":" + anRange + "$");
QRegExpValidator *anValidator = new QRegExpValidator(anRegex, this); QRegularExpressionValidator *anValidator = new QRegularExpressionValidator(anRegex, this);
ui.tokenLineEdit->setValidator(anValidator); ui.tokenLineEdit->setValidator(anValidator);
@ -56,8 +58,8 @@ JsonApiPage::JsonApiPage(QWidget */*parent*/, Qt::WindowFlags /*flags*/)
QString ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])"; QString ipRange = "(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
// You may want to use QRegularExpression for new code with Qt 5 (not mandatory). // You may want to use QRegularExpression for new code with Qt 5 (not mandatory).
QRegExp ipRegex ("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$"); QRegularExpression ipRegex ("^" + ipRange + "\\." + ipRange + "\\." + ipRange + "\\." + ipRange + "$");
QRegExpValidator *ipValidator = new QRegExpValidator(ipRegex, this); QRegularExpressionValidator *ipValidator = new QRegularExpressionValidator(ipRegex, this);
ui.listenAddressLineEdit->setValidator(ipValidator); ui.listenAddressLineEdit->setValidator(ipValidator);
ui.providersListView->setSelectionMode(QAbstractItemView::NoSelection); // prevents edition. ui.providersListView->setSelectionMode(QAbstractItemView::NoSelection); // prevents edition.
@ -232,22 +234,22 @@ void JsonApiPage::addTokenClicked()
whileBlocking(ui.tokensListView)->setModel(new QStringListModel(newTk)); whileBlocking(ui.tokensListView)->setModel(new QStringListModel(newTk));
} }
void JsonApiPage::removeTokenClicked() void JsonApiPage::removeTokenClicked()
{ {
QString token(ui.tokenLineEdit->text()); QString token(ui.tokenLineEdit->text());
std::string tokenStr = token.toStdString(); std::string tokenStr = token.toStdString();
rsJsonApi->revokeAuthToken(tokenStr.substr(0, tokenStr.find_first_of(":"))); rsJsonApi->revokeAuthToken(tokenStr.substr(0, tokenStr.find_first_of(":")));
QStringList newTk; QStringList newTk;
for(const auto& it : rsJsonApi->getAuthorizedTokens()) for(const auto& it : rsJsonApi->getAuthorizedTokens())
newTk.push_back( newTk.push_back(
QString::fromStdString(it.first) + ":" + QString::fromStdString(it.first) + ":" +
QString::fromStdString(it.second) ); QString::fromStdString(it.second) );
whileBlocking(ui.tokensListView)->setModel(new QStringListModel(Settings->getJsonApiAuthTokens()) ); whileBlocking(ui.tokensListView)->setModel(new QStringListModel(Settings->getJsonApiAuthTokens()) );
} }
void JsonApiPage::tokenClicked(const QModelIndex& index) void JsonApiPage::tokenClicked(const QModelIndex& index)
{ {
ui.tokenLineEdit->setText(ui.tokensListView->model()->data(index).toString()); ui.tokenLineEdit->setText(ui.tokensListView->model()->data(index).toString());

View file

@ -49,4 +49,10 @@
#define QtSkipEmptyParts QString::SkipEmptyParts #define QtSkipEmptyParts QString::SkipEmptyParts
#endif #endif
#if QT_VERSION >= QT_VERSION_CHECK (6, 0, 0)
#define QSortFilterProxyModel_setFilterRegularExpression(proxyModel, pattern) proxyModel->setFilterRegularExpression(pattern);
#else
#define QSortFilterProxyModel_setFilterRegularExpression(proxyModel, pattern) proxyModel->setFilterRegExp(pattern);
#endif
#endif #endif