summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-29 20:21:50 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-29 20:21:50 +0200
commit7004cead71f1ae5f322783638a6c33ca90aee2d6 (patch)
tree800ca3ec681a8d7373b5a886d51d886d918beecf
parentaf1fe0932751e17b16755b4b95a457aedc850b98 (diff)
downloadkube-7004cead71f1ae5f322783638a6c33ca90aee2d6.tar.gz
kube-7004cead71f1ae5f322783638a6c33ca90aee2d6.zip
Autocomplete from addressbooks
-rw-r--r--framework/domain/recepientautocompletionmodel.cpp26
-rw-r--r--framework/domain/recepientautocompletionmodel.h1
2 files changed, 26 insertions, 1 deletions
diff --git a/framework/domain/recepientautocompletionmodel.cpp b/framework/domain/recepientautocompletionmodel.cpp
index 4e5fed95..2f52db07 100644
--- a/framework/domain/recepientautocompletionmodel.cpp
+++ b/framework/domain/recepientautocompletionmodel.cpp
@@ -24,6 +24,10 @@
24#include <QSet> 24#include <QSet>
25#include <QDebug> 25#include <QDebug>
26#include <QTimer> 26#include <QTimer>
27#include <sink/store.h>
28#include <sink/applicationdomaintype.h>
29
30using namespace Sink::ApplicationDomain;
27 31
28RecipientAutocompletionModel::RecipientAutocompletionModel(QObject *parent) 32RecipientAutocompletionModel::RecipientAutocompletionModel(QObject *parent)
29 : QSortFilterProxyModel(), 33 : QSortFilterProxyModel(),
@@ -74,6 +78,17 @@ void RecipientAutocompletionModel::load()
74 for (const auto &entry : list) { 78 for (const auto &entry : list) {
75 mSourceModel->appendRow(add(entry)); 79 mSourceModel->appendRow(add(entry));
76 } 80 }
81 Sink::Query query;
82 query.request<Contact::Fn>();
83 query.request<Contact::Emails>();
84 Sink::Store::fetchAll<Contact>(query)
85 .then([this] (const QList<Contact::Ptr> &list) {
86 for (const auto &c : list) {
87 for (const auto &email : c->getEmails()) {
88 addToModel(email.email, c->getFn());
89 }
90 }
91 }).exec();
77} 92}
78 93
79QHash< int, QByteArray > RecipientAutocompletionModel::roleNames() const 94QHash< int, QByteArray > RecipientAutocompletionModel::roleNames() const
@@ -84,7 +99,8 @@ QHash< int, QByteArray > RecipientAutocompletionModel::roleNames() const
84 return roles; 99 return roles;
85} 100}
86 101
87void RecipientAutocompletionModel::addEntry(const QByteArray &address, const QByteArray &name) 102
103bool RecipientAutocompletionModel::addToModel(const QString &address, const QString &name)
88{ 104{
89 auto add = [] (const QString &n) { 105 auto add = [] (const QString &n) {
90 auto item = new QStandardItem{n}; 106 auto item = new QStandardItem{n};
@@ -100,6 +116,14 @@ void RecipientAutocompletionModel::addEntry(const QByteArray &address, const QBy
100 auto matches = mSourceModel->findItems(formattedName); 116 auto matches = mSourceModel->findItems(formattedName);
101 if (matches.isEmpty()) { 117 if (matches.isEmpty()) {
102 mSourceModel->appendRow(add(formattedName)); 118 mSourceModel->appendRow(add(formattedName));
119 return true;
120 }
121 return false;
122}
123
124void RecipientAutocompletionModel::addEntry(const QByteArray &address, const QByteArray &name)
125{
126 if (addToModel(address, name)) {
103 mTimer->start(100); 127 mTimer->start(100);
104 } 128 }
105} 129}
diff --git a/framework/domain/recepientautocompletionmodel.h b/framework/domain/recepientautocompletionmodel.h
index 7e89e513..22c6f108 100644
--- a/framework/domain/recepientautocompletionmodel.h
+++ b/framework/domain/recepientautocompletionmodel.h
@@ -41,6 +41,7 @@ public:
41 41
42 QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE; 42 QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
43 43
44 bool addToModel(const QString &address, const QString &name);
44 void addEntry(const QByteArray &address, const QByteArray &name); 45 void addEntry(const QByteArray &address, const QByteArray &name);
45 void setFilter(const QString &); 46 void setFilter(const QString &);
46 47