summaryrefslogtreecommitdiffstats
path: root/framework/src/domain/maillistmodel.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-02-09 23:41:36 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-02-11 23:01:40 +0100
commit1026c329afed70f5ab3b8db32756ea926049dbe9 (patch)
tree27dd332cf00bee4be5baeaf1a4266be4f51cd702 /framework/src/domain/maillistmodel.cpp
parent9fbae5e1910d08cfeaf0002e881923dacb4c18bf (diff)
downloadkube-1026c329afed70f5ab3b8db32756ea926049dbe9.tar.gz
kube-1026c329afed70f5ab3b8db32756ea926049dbe9.zip
Query instead of filtering
Diffstat (limited to 'framework/src/domain/maillistmodel.cpp')
-rw-r--r--framework/src/domain/maillistmodel.cpp17
1 files changed, 16 insertions, 1 deletions
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()
37 37
38void MailListModel::setFilter(const QString &filter) 38void MailListModel::setFilter(const QString &filter)
39{ 39{
40 setFilterWildcard(filter); 40 if (filter.length() < 3 && !filter.isEmpty()) {
41 return;
42 }
43 auto oldQuery = mQuery;
44 auto query = mQuery;
45 if (!filter.isEmpty()) {
46 auto f = filter;
47 if (filter.contains(' ')) {
48 f = "\"" + filter + "\"";
49 }
50 f.append('*');
51 query.filter<Sink::ApplicationDomain::Mail::Subject>(Sink::QueryBase::Comparator(f, Sink::QueryBase::Comparator::Fulltext));
52 }
53 runQuery(query);
54 mQuery = oldQuery;
41} 55}
42 56
43QString MailListModel::filter() const 57QString MailListModel::filter() const
@@ -188,6 +202,7 @@ bool MailListModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar
188 202
189void MailListModel::runQuery(const Sink::Query &query) 203void MailListModel::runQuery(const Sink::Query &query)
190{ 204{
205 mQuery = query;
191 m_model = Sink::Store::loadModel<Sink::ApplicationDomain::Mail>(query); 206 m_model = Sink::Store::loadModel<Sink::ApplicationDomain::Mail>(query);
192 setSourceModel(m_model.data()); 207 setSourceModel(m_model.data());
193} 208}