qtmobility/plugins/contacts/symbiansim/src/cntabstractsimrequest.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
--- a/qtmobility/plugins/contacts/symbiansim/src/cntabstractsimrequest.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/symbiansim/src/cntabstractsimrequest.cpp	Mon May 03 13:18:40 2010 +0300
@@ -44,13 +44,49 @@
 #include "cntsimstore.h"
 #include <QTimer>
 
-CntAbstractSimRequest::CntAbstractSimRequest(CntSymbianSimEngine *engine)
+CntAbstractSimRequest::CntAbstractSimRequest(CntSymbianSimEngine *engine, QContactAbstractRequest *req)
     :QObject(engine),
-    m_timer(0)
+    m_request(req),
+    m_timer(0),
+    m_retryCount(0)
 {
     
 }
 
+bool CntAbstractSimRequest::start()
+{
+    if (m_request->isActive())
+        return false;
+    
+    m_retryCount = 0;
+    
+    singleShotTimer(KRequestDelay, this, SLOT(run()));
+    QContactManagerEngine::updateRequestState(m_request, QContactAbstractRequest::ActiveState);
+    return true;
+}
+
+bool CntAbstractSimRequest::cancel()
+{
+    if (m_request->isActive()) {
+        cancelTimer();
+        simStore()->cancel();
+        QContactManagerEngine::updateRequestState(m_request, QContactAbstractRequest::CanceledState);
+        return true;
+    }
+    return false;
+}
+
+bool CntAbstractSimRequest::waitAndRetry()
+{
+    if (m_retryCount < KMaxRetryCount)
+    {
+        singleShotTimer(KRequestDelay, this, SLOT(run()));
+        m_retryCount++;
+        return true;
+    }
+    return false;
+}
+
 void CntAbstractSimRequest::singleShotTimer(int msec, QObject *receiver, const char *member)
 {
     // We could use QTimer::singleShot but there is no way to cancel it...