case insensitive search with regexps
This commit is contained in:
parent
2d3993da61
commit
ac100496bb
8 changed files with 19 additions and 12 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 47f4125753452eff8800dbd6600c5a05540b15d9
|
Subproject commit 9c10723bfbaf6cb85107d6ee16e0324e9e487749
|
|
@ -21,9 +21,8 @@ FeedsProxyModel::FeedsProxyModel(FeedsModel* source_model, QObject* parent)
|
||||||
setRecursiveFilteringEnabled(true);
|
setRecursiveFilteringEnabled(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
|
setFilterKeyColumn(FDS_MODEL_TITLE_INDEX);
|
||||||
setFilterKeyColumn(-1);
|
setFilterRole(LOWER_TITLE_ROLE);
|
||||||
setFilterRole(Qt::ItemDataRole::EditRole);
|
|
||||||
|
|
||||||
setDynamicSortFilter(true);
|
setDynamicSortFilter(true);
|
||||||
setSourceModel(m_sourceModel);
|
setSourceModel(m_sourceModel);
|
||||||
|
|
|
@ -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:
|
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: {
|
case Qt::ItemDataRole::ToolTipRole: {
|
||||||
if (idx.column() == MSG_DB_SCORE_INDEX) {
|
if (idx.column() == MSG_DB_SCORE_INDEX) {
|
||||||
|
|
|
@ -17,9 +17,8 @@ MessagesProxyModel::MessagesProxyModel(MessagesModel* source_model, QObject* par
|
||||||
setSortRole(Qt::ItemDataRole::EditRole);
|
setSortRole(Qt::ItemDataRole::EditRole);
|
||||||
setSortCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
|
setSortCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
|
||||||
|
|
||||||
setFilterCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
|
setFilterKeyColumn(MSG_DB_TITLE_INDEX);
|
||||||
setFilterKeyColumn(-1);
|
setFilterRole(LOWER_TITLE_ROLE);
|
||||||
setFilterRole(Qt::ItemDataRole::EditRole);
|
|
||||||
|
|
||||||
setDynamicSortFilter(false);
|
setDynamicSortFilter(false);
|
||||||
setSourceModel(m_sourceModel);
|
setSourceModel(m_sourceModel);
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
#define URL_REGEXP "^(http|https|feed|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$"
|
#define URL_REGEXP "^(http|https|feed|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$"
|
||||||
#define SCRIPT_SOURCE_TYPE_REGEXP "^.+#.*$"
|
#define SCRIPT_SOURCE_TYPE_REGEXP "^.+#.*$"
|
||||||
#define TEXT_TITLE_LIMIT 30
|
#define TEXT_TITLE_LIMIT 30
|
||||||
|
#define LOWER_TITLE_ROLE 64
|
||||||
#define RESELECT_MESSAGE_THRESSHOLD 500
|
#define RESELECT_MESSAGE_THRESSHOLD 500
|
||||||
#define ICON_SIZE_SETTINGS 16
|
#define ICON_SIZE_SETTINGS 16
|
||||||
#define TRAY_ICON_BUBBLE_TIMEOUT 20000
|
#define TRAY_ICON_BUBBLE_TIMEOUT 20000
|
||||||
|
|
|
@ -498,9 +498,9 @@ void FeedsView::switchVisibility() {
|
||||||
|
|
||||||
void FeedsView::filterItems(const QString& pattern) {
|
void FeedsView::filterItems(const QString& pattern) {
|
||||||
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
|
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
|
||||||
m_proxyModel->setFilterRegExp(pattern);
|
m_proxyModel->setFilterRegExp(pattern.toLower());
|
||||||
#else
|
#else
|
||||||
m_proxyModel->setFilterRegularExpression(pattern);
|
m_proxyModel->setFilterRegularExpression(pattern.toLower());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!pattern.simplified().isEmpty()) {
|
if (!pattern.simplified().isEmpty()) {
|
||||||
|
|
|
@ -581,9 +581,9 @@ void MessagesView::selectNextUnreadItem() {
|
||||||
|
|
||||||
void MessagesView::searchMessages(const QString& pattern) {
|
void MessagesView::searchMessages(const QString& pattern) {
|
||||||
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
|
#if QT_VERSION < 0x050C00 // Qt < 5.12.0
|
||||||
m_proxyModel->setFilterRegExp(pattern);
|
m_proxyModel->setFilterRegExp(pattern.toLower());
|
||||||
#else
|
#else
|
||||||
m_proxyModel->setFilterRegularExpression(pattern);
|
m_proxyModel->setFilterRegularExpression(pattern.toLower());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (selectionModel()->selectedRows().isEmpty()) {
|
if (selectionModel()->selectedRows().isEmpty()) {
|
||||||
|
|
|
@ -148,6 +148,9 @@ QVariant RootItem::data(int column, int role) const {
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case LOWER_TITLE_ROLE:
|
||||||
|
return m_title.toLower();
|
||||||
|
|
||||||
case Qt::ItemDataRole::EditRole:
|
case Qt::ItemDataRole::EditRole:
|
||||||
if (column == FDS_MODEL_TITLE_INDEX) {
|
if (column == FDS_MODEL_TITLE_INDEX) {
|
||||||
return m_title;
|
return m_title;
|
||||||
|
|
Loading…
Add table
Reference in a new issue