From 1026c329afed70f5ab3b8db32756ea926049dbe9 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 9 Feb 2018 23:41:36 +0100 Subject: Query instead of filtering --- framework/src/domain/maillistmodel.cpp | 17 ++++++++++++++++- framework/src/domain/maillistmodel.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'framework/src') diff --git a/framework/src/domain/maillistmodel.cpp b/framework/src/domain/maillistmodel.cpp index 4b70a10a..e3ef04d6 100644 --- a/framework/src/domain/maillistmodel.cpp +++ b/framework/src/domain/maillistmodel.cpp @@ -37,7 +37,21 @@ MailListModel::~MailListModel() void MailListModel::setFilter(const QString &filter) { - setFilterWildcard(filter); + if (filter.length() < 3 && !filter.isEmpty()) { + return; + } + auto oldQuery = mQuery; + auto query = mQuery; + if (!filter.isEmpty()) { + auto f = filter; + if (filter.contains(' ')) { + f = "\"" + filter + "\""; + } + f.append('*'); + query.filter(Sink::QueryBase::Comparator(f, Sink::QueryBase::Comparator::Fulltext)); + } + runQuery(query); + mQuery = oldQuery; } QString MailListModel::filter() const @@ -188,6 +202,7 @@ bool MailListModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar void MailListModel::runQuery(const Sink::Query &query) { + mQuery = query; m_model = Sink::Store::loadModel(query); setSourceModel(m_model.data()); } diff --git a/framework/src/domain/maillistmodel.h b/framework/src/domain/maillistmodel.h index ce0399f7..27e8d036 100644 --- a/framework/src/domain/maillistmodel.h +++ b/framework/src/domain/maillistmodel.h @@ -107,4 +107,5 @@ private: QSet mFetchedMails; QByteArray mCurrentQueryItem; bool mIsThreaded = true; + Sink::Query mQuery; }; -- cgit v1.2.3