inc/msgcontacthandler.h
branchGCC_SURGE
changeset 47 5b14749788d7
parent 44 36f374c67aa8
child 70 a15d9966050f
--- a/inc/msgcontacthandler.h	Thu Jun 17 09:57:06 2010 +0100
+++ b/inc/msgcontacthandler.h	Thu Jul 22 16:32:06 2010 +0100
@@ -52,37 +52,57 @@
                                          QString& displayName,
                                          int& countPhoneNumber)
     {
-        QContactManager * phonebookManager;
+        QContactManager phonebookManager;
+        QVariant address(contactNumber);
+
+        // apply filter on phone number field
         QContactDetailFilter phoneFilter;
-        phonebookManager = new QContactManager("symbian");
-        phoneFilter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName,
-                                            QContactPhoneNumber::FieldNumber);
+        phoneFilter.setDetailDefinitionName(
+                QContactPhoneNumber::DefinitionName,
+                QContactPhoneNumber::FieldNumber);
 
-        QVariant address(contactNumber);
         phoneFilter.setValue(address);
         phoneFilter.setMatchFlags(QContactFilter::MatchEndsWith);
-
         QList<QContact> matchingContacts =
-                phonebookManager->contacts(phoneFilter);
-
+                phonebookManager.contacts(phoneFilter);
         if (matchingContacts.count() > 0)
         {
             // Fill the contact details
             QContact match = matchingContacts.at(0);
 
             displayName = match.displayLabel();
-            QList<QContactPhoneNumber> numbers = 
+            QList<QContactPhoneNumber> numbers =
                     match.details<QContactPhoneNumber> ();
             countPhoneNumber = numbers.count();
             return match.localId();
         }
-        else // no matching contacts
+
+        // apply filter on email address field
+        QContactDetailFilter emailFilter;
+        emailFilter.setDetailDefinitionName(
+                QContactEmailAddress::DefinitionName,
+                QContactEmailAddress::FieldEmailAddress);
+
+        emailFilter.setValue(address);
+        emailFilter.setMatchFlags(QContactFilter::MatchExactly);
+        matchingContacts = phonebookManager.contacts(emailFilter);
+        if ( matchingContacts.count() > 0 )
         {
-            displayName = contactNumber;
-            return -1;
+            // Fill the contact details
+            QContact match = matchingContacts.at(0);
+
+            displayName = match.displayLabel();
+            QList<QContactEmailAddress> numbers =
+                    match.details<QContactEmailAddress> ();
+            countPhoneNumber = numbers.count();
+            return match.localId();
         }
+
+        // no matching contact
+        displayName = contactNumber;
+        return -1;
     }
-    
+
     /**
      * This shall resolve contact number with display name
      * @param contactNumber number to resolve
@@ -161,17 +181,20 @@
                 if (versitDocuments.count() > 0)
                 {
                     QVersitContactImporter importer;
-                    QList<QContact> contacts =
-                            importer.importContacts(versitDocuments);
-                    // get display-name
-                    if (contacts.count() > 0)
+                    bool import_docs = importer.importDocuments(versitDocuments);
+                    if(import_docs)
                     {
-                        //resolveSynthesizedDisplayLabel
-                        QContactManager* contactManager =
+                       QList<QContact> contacts = importer.contacts();
+                       // get display-name
+                       if (contacts.count() > 0)
+                       {
+                          //resolveSynthesizedDisplayLabel
+                          QContactManager* contactManager =
                                 new QContactManager("symbian");
-                        displayName
+                          displayName
                                 = contactManager->synthesizedDisplayLabel(contacts[0]);
-                        delete contactManager;
+                          delete contactManager;
+                       }
                     }
                 }
             }