diff options
author | Don Sanders <don.sanders@nokia.com> | 2010-01-08 18:54:45 +1000 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2010-01-08 18:54:45 +1000 |
commit | 710829088211fe027ce1eff7e65552203fe02ecc (patch) | |
tree | 9866fc122ec70bbfd3d86039e344e357092e869a | |
parent | efda6882aadd3078019668b43651f89115547070 (diff) |
Simple auto completion in recipient fields using mail in sent folder(s).2010W01
-rw-r--r-- | src/plugins/composers/email/emailcomposer.cpp | 26 |
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 |