Fixed a bug that caused Eniro search results to sometimes have phone number in street...
[jenirok] / src / common / contactmanager.cpp
index e674a4b..974c7a5 100644 (file)
 #include <QtCore/QDebug>
 #include "contactmanager.h"
 
-namespace
-{
-    const int COUNTRY_CODES[] = {358, 45, 46, 47};
-    const int NUM_OF_CODES = 4;
-}
 
 ContactManager::ContactManager(): book_(0)
 {
@@ -31,6 +26,10 @@ ContactManager::ContactManager(): book_(0)
 
 ContactManager::~ContactManager()
 {
+    if(book_)
+    {
+        g_object_unref(book_);
+    }
 }
 
 bool ContactManager::numberExists(QString const& number)
@@ -43,8 +42,8 @@ bool ContactManager::numberExists(QString const& number)
     EBookQuery* query;
     GList *g_contacts;
 
-    QString copy(number);
-    QString clean = removeCountryCode(copy);
+    // Just check the last 7 digits
+    QString clean = number.right(7);
 
     query = e_book_query_any_field_contains(clean.toLatin1());
 
@@ -58,7 +57,6 @@ bool ContactManager::numberExists(QString const& number)
 
     if (g_contacts == 0)
     {
-        qDebug() << "no contacts";
         return false;
     }
 
@@ -137,43 +135,3 @@ bool ContactManager::load()
 
 }
 
-QString& ContactManager::removeCountryCode(QString& number)
-{
-    if(number.isEmpty())
-    {
-        return number;
-    }
-
-    if(number.at(0) == '0')
-    {
-        return number.remove(0, 1);
-    }
-    else if(number.at(0) != '+')
-    {
-        return number;
-    }
-
-    static QRegExp countryCodeCleaner;
-    static bool countryCodeCleanerLoaded = false;
-
-    if(!countryCodeCleanerLoaded)
-    {
-        QString match = "";
-
-        for(int i = 0; i < NUM_OF_CODES; i++)
-        {
-            if(i > 0)
-            {
-                match += "|";
-            }
-
-            match += "\\+" + QString::number(COUNTRY_CODES[i]);
-        }
-
-        countryCodeCleaner = QRegExp("^(" + match + ")");
-        countryCodeCleanerLoaded = true;
-    }
-
-    return number.replace(countryCodeCleaner, "");
-}
-