[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim/KDE/4.14] libkdepim/addressline: Use new baloocompletionemail
From:       Montel Laurent <montel () kde ! org>
Date:       2015-02-04 7:40:34
Message-ID: E1YIuZe-0000oB-Da () scm ! kde ! org
[Download RAW message or body]

Git commit 8ad016dafe77116ee38861b603596a72ddff3407 by Montel Laurent.
Committed on 04/02/2015 at 07:40.
Pushed by mlaurent into branch 'KDE/4.14'.

Use new baloocompletionemail

M  +7    -25   libkdepim/addressline/addresseelineedit.cpp
M  +68   -0    libkdepim/addressline/autotests/baloocompletionemailtest.cpp
M  +4    -0    libkdepim/addressline/autotests/baloocompletionemailtest.h
M  +11   -2    libkdepim/addressline/baloocompletionemail.cpp

http://commits.kde.org/kdepim/8ad016dafe77116ee38861b603596a72ddff3407

diff --git a/libkdepim/addressline/addresseelineedit.cpp \
b/libkdepim/addressline/addresseelineedit.cpp index 412eca4..9af085d 100644
--- a/libkdepim/addressline/addresseelineedit.cpp
+++ b/libkdepim/addressline/addresseelineedit.cpp
@@ -29,6 +29,7 @@
 #include "completionordereditor.h"
 #include "addressline/blacklistbaloocompletion/blacklistbalooemailcompletiondialog.h"
  #include "kmailcompletion.h"
+#include "baloocompletionemail.h"
 
 #include <Akonadi/Contact/ContactSearchJob>
 #include <Akonadi/Contact/ContactGroupSearchJob>
@@ -234,7 +235,6 @@ public:
         connect( &m_delayedQueryTimer, SIGNAL(timeout()), q, \
SLOT(slotTriggerDelayedQueries()) );  }
     void loadBalooBlackList();
-    QStringList cleanupBalooContact(const QStringList &lst);
     void alternateColor();
     void init();
     void startLoadingLDAPEntries();
@@ -368,35 +368,17 @@ void AddresseeLineEdit::Private::stopLDAPLookup()
     s_static->ldapLineEdit = 0;
 }
 
-
-QStringList AddresseeLineEdit::Private::cleanupBalooContact(const QStringList &lst)
-{
-    if (lst.isEmpty())
-        return lst;
-    QHash<QString, QString> hashEmail;
-    Q_FOREACH (const QString &email, lst) {
-        if (!hashEmail.contains(email.toLower())) {
-            hashEmail.insert(email.toLower(), email);
-        }
-    }
-    return hashEmail.values();
-}
-
 void AddresseeLineEdit::Private::searchInBaloo()
 {
     const QString trimmedString = m_searchString.trimmed();
     Baloo::PIM::ContactCompleter com(trimmedString, 20);
-    const QStringList listEmail = cleanupBalooContact(com.complete());
+    KPIM::BalooCompletionEmail completionEmail;
+    completionEmail.setEmailList(com.complete());
+    completionEmail.setBlackList(m_balooBlackList);
+    completionEmail.setExcludeDomain(m_domainExcludeList);
+    const QStringList listEmail = completionEmail.cleanupEmailList();
     Q_FOREACH (const QString& email, listEmail) {
-        Q_FOREACH(const QString &excludeDomain, m_domainExcludeList) {
-            if (email.endsWith(excludeDomain)) {
-                continue;
-            }
-        }
-
-        if (!m_balooBlackList.contains(email)) {
-            addCompletionItem(email, 1, s_static->balooCompletionSource);
-        }
+        addCompletionItem(email, 1, s_static->balooCompletionSource);
     }
     doCompletion( m_lastSearchMode );
     //  if ( q->hasFocus() || q->completionBox()->hasFocus() ) {
diff --git a/libkdepim/addressline/autotests/baloocompletionemailtest.cpp \
b/libkdepim/addressline/autotests/baloocompletionemailtest.cpp index e567cdd..b1fed0e \
                100644
--- a/libkdepim/addressline/autotests/baloocompletionemailtest.cpp
+++ b/libkdepim/addressline/autotests/baloocompletionemailtest.cpp
@@ -74,4 +74,72 @@ void \
BalooCompletionEmailTest::shouldReturnSameListIfBlackListDoesntInterceptEma  \
QCOMPARE(completion.cleanupEmailList(), emailList);  }
 
+void BalooCompletionEmailTest::shouldReturnUniqueEmail()
+{
+    KPIM::BalooCompletionEmail completion;
+    QStringList emailList;
+    emailList << QLatin1String("foo");
+    emailList << QLatin1String("foo");
+    emailList << QLatin1String("foo1");
+    emailList << QLatin1String("foo");
+    emailList << QLatin1String("foo1");
+    emailList << QLatin1String("foo2");
+    completion.setEmailList(emailList);
+    QCOMPARE(completion.cleanupEmailList(), (QStringList() << QLatin1String("foo") \
<< QLatin1String("foo1") << QLatin1String("foo2") ) ); +}
+
+void BalooCompletionEmailTest::shouldReturnEmptyListWhenAllBlackListed()
+{
+    KPIM::BalooCompletionEmail completion;
+    QStringList emailList;
+    emailList << QLatin1String("foo");
+    emailList << QLatin1String("foo2");
+    emailList << QLatin1String("foo3");
+    emailList << QLatin1String("foo4");
+    emailList << QLatin1String("foo5");
+    emailList << QLatin1String("foo6");
+    completion.setEmailList(emailList);
+    completion.setBlackList(emailList);
+    QVERIFY(completion.cleanupEmailList().isEmpty());
+}
+
+void BalooCompletionEmailTest::shouldExcludeDomain()
+{
+    KPIM::BalooCompletionEmail completion;
+    QStringList emailList;
+    emailList << QLatin1String("foo@kde.org");
+    emailList << QLatin1String("foo2@kde.org");
+    emailList << QLatin1String("foo3@kde.org");
+    emailList << QLatin1String("foo4@kde.org");
+    emailList << QLatin1String("foo5@kde.org");
+    emailList << QLatin1String("foo6@kde.org");
+    completion.setEmailList(emailList);
+    completion.setExcludeDomain(QStringList() << QLatin1String("kde.org"));
+    QVERIFY(completion.cleanupEmailList().isEmpty());
+
+    const QString newAddress = QLatin1String("foo6@linux.org");
+    emailList << newAddress;
+    completion.setEmailList(emailList);
+    QCOMPARE(completion.cleanupEmailList(), (QStringList() << newAddress) );
+
+    completion.setExcludeDomain(QStringList() << QLatin1String("kde.org") << \
QLatin1String("linux.org") ); +    QVERIFY(completion.cleanupEmailList().isEmpty());
+}
+
+void BalooCompletionEmailTest::shouldReturnEmailListWhenDomainListIsNotNull()
+{
+    KPIM::BalooCompletionEmail completion;
+    QStringList emailList;
+    emailList << QLatin1String("foo@kde.org");
+    emailList << QLatin1String("foo2@kde.org");
+    emailList << QLatin1String("foo3@kde.org");
+    emailList << QLatin1String("foo4@kde.org");
+    emailList << QLatin1String("foo5@kde.org");
+    emailList << QLatin1String("foo6@kde.org");
+    emailList.sort();
+    completion.setEmailList(emailList);
+    completion.setExcludeDomain(QStringList() << QLatin1String(""));
+    QCOMPARE(completion.cleanupEmailList(), emailList);
+}
+
 QTEST_KDEMAIN(BalooCompletionEmailTest, NoGUI)
diff --git a/libkdepim/addressline/autotests/baloocompletionemailtest.h \
b/libkdepim/addressline/autotests/baloocompletionemailtest.h index a815f3b..47cb248 \
                100644
--- a/libkdepim/addressline/autotests/baloocompletionemailtest.h
+++ b/libkdepim/addressline/autotests/baloocompletionemailtest.h
@@ -34,6 +34,10 @@ private Q_SLOTS:
     void returnEmptyListWhenEmailListIsEmpty();
     void shouldReturnSameListWhenNotExclude();
     void shouldReturnSameListIfBlackListDoesntInterceptEmail();
+    void shouldReturnUniqueEmail();
+    void shouldReturnEmptyListWhenAllBlackListed();
+    void shouldExcludeDomain();
+    void shouldReturnEmailListWhenDomainListIsNotNull();
 };
 
 #endif // BALOOCOMPLETIONEMAILTEST_H
diff --git a/libkdepim/addressline/baloocompletionemail.cpp \
b/libkdepim/addressline/baloocompletionemail.cpp index 0ec966c..d352448 100644
--- a/libkdepim/addressline/baloocompletionemail.cpp
+++ b/libkdepim/addressline/baloocompletionemail.cpp
@@ -19,8 +19,8 @@
 */
 
 #include "baloocompletionemail.h"
-
 #include <QMap>
+#include <QDebug>
 using namespace KPIM;
 
 BalooCompletionEmail::BalooCompletionEmail()
@@ -50,7 +50,16 @@ QStringList BalooCompletionEmail::cleanupEmailList() const
     QMap<QString, QString> hashEmail;
     Q_FOREACH (const QString &email, mListEmail) {
         if (!mBlackList.contains(email)) {
-            if (!hashEmail.contains(email.toLower())) {
+            bool excludeMail = false;
+            Q_FOREACH(const QString &excludeDomain, mExcludeDomain) {
+                if (!excludeDomain.isEmpty()) {
+                    if (email.endsWith(excludeDomain)) {
+                        excludeMail = true;
+                        continue;
+                    }
+                }
+            }
+            if (!excludeMail && !hashEmail.contains(email.toLower())) {
                 hashEmail.insert(email.toLower(), email);
             }
         }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic