diff --git a/resources/scripts/7za b/resources/scripts/7za index 47f412575..9c10723bf 160000 --- a/resources/scripts/7za +++ b/resources/scripts/7za @@ -1 +1 @@ -Subproject commit 47f4125753452eff8800dbd6600c5a05540b15d9 +Subproject commit 9c10723bfbaf6cb85107d6ee16e0324e9e487749 diff --git a/src/librssguard/core/feedsproxymodel.cpp b/src/librssguard/core/feedsproxymodel.cpp index 61573185c..e57ba1fd5 100644 --- a/src/librssguard/core/feedsproxymodel.cpp +++ b/src/librssguard/core/feedsproxymodel.cpp @@ -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); diff --git a/src/librssguard/core/messagesmodel.cpp b/src/librssguard/core/messagesmodel.cpp index 2df972cf6..5dd9a1fa9 100644 --- a/src/librssguard/core/messagesmodel.cpp +++ b/src/librssguard/core/messagesmodel.cpp @@ -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) { diff --git a/src/librssguard/core/messagesproxymodel.cpp b/src/librssguard/core/messagesproxymodel.cpp index da86f19d5..59c92bde7 100644 --- a/src/librssguard/core/messagesproxymodel.cpp +++ b/src/librssguard/core/messagesproxymodel.cpp @@ -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); diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h index 3fcf4c828..98c0e6cef 100755 --- a/src/librssguard/definitions/definitions.h +++ b/src/librssguard/definitions/definitions.h @@ -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 diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index 09a257e38..c60c67250 100755 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -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()) { diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index 8f61bd3f0..f27a57d4f 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -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()) { diff --git a/src/librssguard/services/abstract/rootitem.cpp b/src/librssguard/services/abstract/rootitem.cpp index 53e57e54d..b787549ea 100644 --- a/src/librssguard/services/abstract/rootitem.cpp +++ b/src/librssguard/services/abstract/rootitem.cpp @@ -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;