case insensitive search with regexps

This commit is contained in:
Martin Rotter 2021-04-13 19:45:03 +02:00 committed by Martin Rotter
parent 2d3993da61
commit ac100496bb
8 changed files with 19 additions and 12 deletions

@ -1 +1 @@
Subproject commit 47f4125753452eff8800dbd6600c5a05540b15d9
Subproject commit 9c10723bfbaf6cb85107d6ee16e0324e9e487749

View file

@ -21,9 +21,8 @@ FeedsProxyModel::FeedsProxyModel(FeedsModel* source_model, QObject* parent)
setRecursiveFilteringEnabled(true);
#endif
setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
setFilterKeyColumn(-1);
setFilterRole(Qt::ItemDataRole::EditRole);
setFilterKeyColumn(FDS_MODEL_TITLE_INDEX);
setFilterRole(LOWER_TITLE_ROLE);
setDynamicSortFilter(true);
setSourceModel(m_sourceModel);

View file

@ -324,8 +324,13 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const {
}
}
case LOWER_TITLE_ROLE:
return messageAt(idx.row()).m_title.toLower();
case Qt::ItemDataRole::EditRole:
return m_cache->containsData(idx.row()) ? m_cache->data(idx) : QSqlQueryModel::data(idx, role);
return m_cache->containsData(idx.row())
? m_cache->data(idx)
: QSqlQueryModel::data(idx, role);
case Qt::ItemDataRole::ToolTipRole: {
if (idx.column() == MSG_DB_SCORE_INDEX) {

View file

@ -17,9 +17,8 @@ MessagesProxyModel::MessagesProxyModel(MessagesModel* source_model, QObject* par
setSortRole(Qt::ItemDataRole::EditRole);
setSortCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
setFilterKeyColumn(-1);
setFilterRole(Qt::ItemDataRole::EditRole);
setFilterKeyColumn(MSG_DB_TITLE_INDEX);
setFilterRole(LOWER_TITLE_ROLE);
setDynamicSortFilter(false);
setSourceModel(m_sourceModel);

View file

@ -57,6 +57,7 @@
#define URL_REGEXP "^(http|https|feed|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$"
#define SCRIPT_SOURCE_TYPE_REGEXP "^.+#.*$"
#define TEXT_TITLE_LIMIT 30
#define LOWER_TITLE_ROLE 64
#define RESELECT_MESSAGE_THRESSHOLD 500
#define ICON_SIZE_SETTINGS 16
#define TRAY_ICON_BUBBLE_TIMEOUT 20000

View file

@ -498,9 +498,9 @@ void FeedsView::switchVisibility() {
void FeedsView::filterItems(const QString& pattern) {
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
m_proxyModel->setFilterRegExp(pattern);
m_proxyModel->setFilterRegExp(pattern.toLower());
#else
m_proxyModel->setFilterRegularExpression(pattern);
m_proxyModel->setFilterRegularExpression(pattern.toLower());
#endif
if (!pattern.simplified().isEmpty()) {

View file

@ -581,9 +581,9 @@ void MessagesView::selectNextUnreadItem() {
void MessagesView::searchMessages(const QString& pattern) {
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
m_proxyModel->setFilterRegExp(pattern);
m_proxyModel->setFilterRegExp(pattern.toLower());
#else
m_proxyModel->setFilterRegularExpression(pattern);
m_proxyModel->setFilterRegularExpression(pattern.toLower());
#endif
if (selectionModel()->selectedRows().isEmpty()) {

View file

@ -148,6 +148,9 @@ QVariant RootItem::data(int column, int role) const {
return QVariant();
}
case LOWER_TITLE_ROLE:
return m_title.toLower();
case Qt::ItemDataRole::EditRole:
if (column == FDS_MODEL_TITLE_INDEX) {
return m_title;