diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-02-09 23:41:36 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-02-11 23:01:40 +0100 |
commit | 1026c329afed70f5ab3b8db32756ea926049dbe9 (patch) | |
tree | 27dd332cf00bee4be5baeaf1a4266be4f51cd702 /framework/src | |
parent | 9fbae5e1910d08cfeaf0002e881923dacb4c18bf (diff) | |
download | kube-1026c329afed70f5ab3b8db32756ea926049dbe9.tar.gz kube-1026c329afed70f5ab3b8db32756ea926049dbe9.zip |
Query instead of filtering
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/domain/maillistmodel.cpp | 17 | ||||
-rw-r--r-- | framework/src/domain/maillistmodel.h | 1 |
2 files changed, 17 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 | ||
38 | void MailListModel::setFilter(const QString &filter) | 38 | void 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 | ||
43 | QString MailListModel::filter() const | 57 | QString MailListModel::filter() const |
@@ -188,6 +202,7 @@ bool MailListModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar | |||
188 | 202 | ||
189 | void MailListModel::runQuery(const Sink::Query &query) | 203 | void 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 | } |
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: | |||
107 | QSet<QByteArray> mFetchedMails; | 107 | QSet<QByteArray> mFetchedMails; |
108 | QByteArray mCurrentQueryItem; | 108 | QByteArray mCurrentQueryItem; |
109 | bool mIsThreaded = true; | 109 | bool mIsThreaded = true; |
110 | Sink::Query mQuery; | ||
110 | }; | 111 | }; |