summaryrefslogtreecommitdiffstats
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
parent9fbae5e1910d08cfeaf0002e881923dacb4c18bf (diff)
downloadkube-1026c329afed70f5ab3b8db32756ea926049dbe9.tar.gz
kube-1026c329afed70f5ab3b8db32756ea926049dbe9.zip
Query instead of filtering
-rw-r--r--framework/qml/MailListView.qml2
-rw-r--r--framework/src/domain/maillistmodel.cpp17
-rw-r--r--framework/src/domain/maillistmodel.h1
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
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}
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};