qtmobility/plugins/contacts/symbiansim/src/cntsimdetaildefinitionfetchrequest.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
--- a/qtmobility/plugins/contacts/symbiansim/src/cntsimdetaildefinitionfetchrequest.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/symbiansim/src/cntsimdetaildefinitionfetchrequest.cpp	Mon May 03 13:18:40 2010 +0300
@@ -41,13 +41,10 @@
 
 #include "cntsimdetaildefinitionfetchrequest.h"
 #include "cntsymbiansimengine.h"
-#include "cntsimstore.h"
 #include <qcontactdetaildefinitionfetchrequest.h>
-#include <QTimer>
 
 CntSimDetailDefinitionFetchRequest::CntSimDetailDefinitionFetchRequest(CntSymbianSimEngine *engine, QContactDetailDefinitionFetchRequest *req)
-    :CntAbstractSimRequest(engine),
-     m_req(req)
+    :CntAbstractSimRequest(engine, req)
 {
 
 }
@@ -57,26 +54,11 @@
     cancel();
 }
 
-bool CntSimDetailDefinitionFetchRequest::start()
-{
-    singleShotTimer(0, this, SLOT(readDetailDefinitions()));
-    QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::ActiveState);
-    return true; 
-}
-
-bool CntSimDetailDefinitionFetchRequest::cancel()
+void CntSimDetailDefinitionFetchRequest::run()
 {
-    if (m_req->isActive()) {
-        cancelTimer();
-        QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::CanceledState);
-        return true;
-    }
-    return false;
-}
-
-void CntSimDetailDefinitionFetchRequest::readDetailDefinitions()
-{
-    if (m_req->isCanceled())
+    QContactDetailDefinitionFetchRequest *r = req<QContactDetailDefinitionFetchRequest>();
+    
+    if (!r->isActive())
         return;
     
     QContactManager::Error error = QContactManager::NoError;
@@ -84,30 +66,31 @@
     QMap<int, QContactManager::Error> errorMap;
         
     // Get all detail definitions
-    QMap<QString, QContactDetailDefinition> allDefs = engine()->detailDefinitions(m_req->contactType(), error);
+    QMap<QString, QContactDetailDefinition> allDefs = engine()->detailDefinitions(r->contactType(), &error);
+    
+    QStringList defNames = r->definitionNames();
     
     // Check for error
     if (error != QContactManager::NoError) 
     {
-        for (int i=0; i<m_req->definitionNames().count(); i++)
+        for (int i=0; i<defNames.count(); i++)
             errorMap.insert(i, error);
     
         // Complete the request
-        QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::FinishedState);
-        QContactManagerEngine::updateDefinitionFetchRequest(m_req, result, error, errorMap);
+        QContactManagerEngine::updateDefinitionFetchRequest(r, result, error, errorMap, QContactAbstractRequest::FinishedState);
         return;
     }
 
     // Filter results
-    if (m_req->definitionNames().count() == 0) 
+    if (r->definitionNames().count() == 0) 
     {
         result = allDefs;
     }
     else 
     {
-        for (int i=0; i<m_req->definitionNames().count(); i++) 
+        for (int i=0; i<defNames.count(); i++) 
         {
-            QString defName = m_req->definitionNames().at(i);
+            QString defName = defNames.at(i);
             if (allDefs.contains(defName))
                 result.insert(defName, allDefs.value(defName));
             else
@@ -120,8 +103,5 @@
     }
     
     // Complete the request
-    QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::FinishedState);
-    QContactManagerEngine::updateDefinitionFetchRequest(m_req, result, error, errorMap);
+    QContactManagerEngine::updateDefinitionFetchRequest(r, result, error, errorMap, QContactAbstractRequest::FinishedState);
 }
-
-