summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2010-01-08 18:54:45 +1000
committerDon Sanders <don.sanders@nokia.com>2010-01-08 18:54:45 +1000
commit710829088211fe027ce1eff7e65552203fe02ecc (patch)
tree9866fc122ec70bbfd3d86039e344e357092e869a
parentefda6882aadd3078019668b43651f89115547070 (diff)
Simple auto completion in recipient fields using mail in sent folder(s).2010W01
-rw-r--r--src/plugins/composers/email/emailcomposer.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/composers/email/emailcomposer.cpp b/src/plugins/composers/email/emailcomposer.cpp
index d5832535..2df654ff 100644
--- a/src/plugins/composers/email/emailcomposer.cpp
+++ b/src/plugins/composers/email/emailcomposer.cpp
@@ -72,6 +72,7 @@
#include <support/qmailnamespace.h>
#include <QUrl>
#include <QSyntaxHighlighter>
+#include <QCompleter>
static int minimumLeftWidth = 65;
static const QString placeholder("(no subject)");
@@ -80,6 +81,29 @@ enum RecipientType {To, Cc, Bcc };
typedef QPair<RecipientType,QString> Recipient;
typedef QList<Recipient> RecipientList;
+static QCompleter* sentFolderCompleter()
+{
+ const int completionAddressLimit(1000);
+ QSet<QString> addressSet;
+ QMailMessageKey::Properties props(QMailMessageKey::Recipients);
+ QMailMessageKey key(QMailMessageKey::status(QMailMessage::Outbox));
+ QMailMessageMetaDataList metaDataList(QMailStore::instance()->messagesMetaData(key, props, QMailStore::ReturnDistinct));
+ foreach (const QMailMessageMetaData &metaData, metaDataList) {
+ foreach(QMailAddress address, metaData.to()) {
+ QString s(address.toString());
+ if (!s.simplified().isEmpty()) {
+ addressSet.insert(s);
+ }
+ }
+ if (addressSet.count() >= completionAddressLimit)
+ break;
+ }
+
+ QCompleter *completer(new QCompleter(addressSet.toList()));
+ completer->setCaseSensitivity(Qt::CaseInsensitive);
+ return completer;
+}
+
class RecipientWidget : public QWidget
{
Q_OBJECT
@@ -141,6 +165,8 @@ m_removeButton(new QToolButton(this))
m_removeButton->setFocusPolicy(Qt::NoFocus);
setFocusPolicy(Qt::StrongFocus);
+
+ m_recipientEdit->setCompleter(sentFolderCompleter());
}
bool RecipientWidget::isRemoveEnabled() const