diff options
-rw-r--r-- | framework/domain/recepientautocompletionmodel.cpp | 26 | ||||
-rw-r--r-- | framework/domain/recepientautocompletionmodel.h | 1 |
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 | |||
30 | using namespace Sink::ApplicationDomain; | ||
27 | 31 | ||
28 | RecipientAutocompletionModel::RecipientAutocompletionModel(QObject *parent) | 32 | RecipientAutocompletionModel::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 | ||
79 | QHash< int, QByteArray > RecipientAutocompletionModel::roleNames() const | 94 | QHash< 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 | ||
87 | void RecipientAutocompletionModel::addEntry(const QByteArray &address, const QByteArray &name) | 102 | |
103 | bool 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 | |||
124 | void 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 | ||