qtmobility/plugins/contacts/symbiansim/src/cntsimdetaildefinitionfetchrequest.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    39 **
    39 **
    40 ****************************************************************************/
    40 ****************************************************************************/
    41 
    41 
    42 #include "cntsimdetaildefinitionfetchrequest.h"
    42 #include "cntsimdetaildefinitionfetchrequest.h"
    43 #include "cntsymbiansimengine.h"
    43 #include "cntsymbiansimengine.h"
    44 #include "cntsimstore.h"
       
    45 #include <qcontactdetaildefinitionfetchrequest.h>
    44 #include <qcontactdetaildefinitionfetchrequest.h>
    46 #include <QTimer>
       
    47 
    45 
    48 CntSimDetailDefinitionFetchRequest::CntSimDetailDefinitionFetchRequest(CntSymbianSimEngine *engine, QContactDetailDefinitionFetchRequest *req)
    46 CntSimDetailDefinitionFetchRequest::CntSimDetailDefinitionFetchRequest(CntSymbianSimEngine *engine, QContactDetailDefinitionFetchRequest *req)
    49     :CntAbstractSimRequest(engine),
    47     :CntAbstractSimRequest(engine, req)
    50      m_req(req)
       
    51 {
    48 {
    52 
    49 
    53 }
    50 }
    54 
    51 
    55 CntSimDetailDefinitionFetchRequest::~CntSimDetailDefinitionFetchRequest()
    52 CntSimDetailDefinitionFetchRequest::~CntSimDetailDefinitionFetchRequest()
    56 {
    53 {
    57     cancel();
    54     cancel();
    58 }
    55 }
    59 
    56 
    60 bool CntSimDetailDefinitionFetchRequest::start()
    57 void CntSimDetailDefinitionFetchRequest::run()
    61 {
    58 {
    62     singleShotTimer(0, this, SLOT(readDetailDefinitions()));
    59     QContactDetailDefinitionFetchRequest *r = req<QContactDetailDefinitionFetchRequest>();
    63     QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::ActiveState);
    60     
    64     return true; 
    61     if (!r->isActive())
    65 }
       
    66 
       
    67 bool CntSimDetailDefinitionFetchRequest::cancel()
       
    68 {
       
    69     if (m_req->isActive()) {
       
    70         cancelTimer();
       
    71         QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::CanceledState);
       
    72         return true;
       
    73     }
       
    74     return false;
       
    75 }
       
    76 
       
    77 void CntSimDetailDefinitionFetchRequest::readDetailDefinitions()
       
    78 {
       
    79     if (m_req->isCanceled())
       
    80         return;
    62         return;
    81     
    63     
    82     QContactManager::Error error = QContactManager::NoError;
    64     QContactManager::Error error = QContactManager::NoError;
    83     QMap<QString, QContactDetailDefinition> result;
    65     QMap<QString, QContactDetailDefinition> result;
    84     QMap<int, QContactManager::Error> errorMap;
    66     QMap<int, QContactManager::Error> errorMap;
    85         
    67         
    86     // Get all detail definitions
    68     // Get all detail definitions
    87     QMap<QString, QContactDetailDefinition> allDefs = engine()->detailDefinitions(m_req->contactType(), error);
    69     QMap<QString, QContactDetailDefinition> allDefs = engine()->detailDefinitions(r->contactType(), &error);
       
    70     
       
    71     QStringList defNames = r->definitionNames();
    88     
    72     
    89     // Check for error
    73     // Check for error
    90     if (error != QContactManager::NoError) 
    74     if (error != QContactManager::NoError) 
    91     {
    75     {
    92         for (int i=0; i<m_req->definitionNames().count(); i++)
    76         for (int i=0; i<defNames.count(); i++)
    93             errorMap.insert(i, error);
    77             errorMap.insert(i, error);
    94     
    78     
    95         // Complete the request
    79         // Complete the request
    96         QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::FinishedState);
    80         QContactManagerEngine::updateDefinitionFetchRequest(r, result, error, errorMap, QContactAbstractRequest::FinishedState);
    97         QContactManagerEngine::updateDefinitionFetchRequest(m_req, result, error, errorMap);
       
    98         return;
    81         return;
    99     }
    82     }
   100 
    83 
   101     // Filter results
    84     // Filter results
   102     if (m_req->definitionNames().count() == 0) 
    85     if (r->definitionNames().count() == 0) 
   103     {
    86     {
   104         result = allDefs;
    87         result = allDefs;
   105     }
    88     }
   106     else 
    89     else 
   107     {
    90     {
   108         for (int i=0; i<m_req->definitionNames().count(); i++) 
    91         for (int i=0; i<defNames.count(); i++) 
   109         {
    92         {
   110             QString defName = m_req->definitionNames().at(i);
    93             QString defName = defNames.at(i);
   111             if (allDefs.contains(defName))
    94             if (allDefs.contains(defName))
   112                 result.insert(defName, allDefs.value(defName));
    95                 result.insert(defName, allDefs.value(defName));
   113             else
    96             else
   114                 errorMap.insert(i, QContactManager::DoesNotExistError);
    97                 errorMap.insert(i, QContactManager::DoesNotExistError);
   115         }
    98         }
   118         if (errorMap.count())
   101         if (errorMap.count())
   119             error = errorMap.begin().value();
   102             error = errorMap.begin().value();
   120     }
   103     }
   121     
   104     
   122     // Complete the request
   105     // Complete the request
   123     QContactManagerEngine::updateRequestState(m_req, QContactAbstractRequest::FinishedState);
   106     QContactManagerEngine::updateDefinitionFetchRequest(r, result, error, errorMap, QContactAbstractRequest::FinishedState);
   124     QContactManagerEngine::updateDefinitionFetchRequest(m_req, result, error, errorMap);
       
   125 }
   107 }
   126 
       
   127