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 | |
parent | 9fbae5e1910d08cfeaf0002e881923dacb4c18bf (diff) | |
download | kube-1026c329afed70f5ab3b8db32756ea926049dbe9.tar.gz kube-1026c329afed70f5ab3b8db32756ea926049dbe9.zip |
Query instead of filtering
-rw-r--r-- | framework/qml/MailListView.qml | 2 | ||||
-rw-r--r-- | framework/src/domain/maillistmodel.cpp | 17 | ||||
-rw-r--r-- | framework/src/domain/maillistmodel.h | 1 |
3 files changed, 19 insertions, 1 deletions
diff --git a/framework/qml/MailListView.qml b/framework/qml/MailListView.qml index 1cdc664f..8fed8c9d 100644 --- a/framework/qml/MailListView.qml +++ b/framework/qml/MailListView.qml | |||
@@ -43,6 +43,7 @@ FocusScope { | |||
43 | onMessageReceived: { | 43 | onMessageReceived: { |
44 | parentFolder = message.folder | 44 | parentFolder = message.folder |
45 | currentMail = null | 45 | currentMail = null |
46 | filterField.clearSearch() | ||
46 | } | 47 | } |
47 | } | 48 | } |
48 | 49 | ||
@@ -82,6 +83,7 @@ FocusScope { | |||
82 | function clearSearch() { | 83 | function clearSearch() { |
83 | filterField.visible = false | 84 | filterField.visible = false |
84 | find.text = "" | 85 | find.text = "" |
86 | mailListModel.filter = "" | ||
85 | } | 87 | } |
86 | 88 | ||
87 | RowLayout { | 89 | RowLayout { |
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 | }; |