emailuis/nmhswidget/src/nmhswidgetemailengine.cpp
changeset 49 00c7ae862740
parent 47 f83bd4ae1fe3
child 66 084b5b1f02a7
--- a/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Tue Jun 29 17:12:28 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Fri Jul 02 15:55:16 2010 +0300
@@ -43,7 +43,8 @@
     mAccountEventReceivedWhenSuspended(false),
     mMessageEventReceivedWhenSuspended(false), 
     mSuspended(false),
-    mUpdateTimer(0)
+    mUpdateTimer(0),
+    mAiwRequest(0)
 {
     NM_FUNCTION;
 }
@@ -409,19 +410,24 @@
     NM_FUNCTION;
     
     QT_TRY{ 
-        XQApplicationManager appManager;
-        XQAiwRequest* request = appManager.create(
-                XQI_EMAIL_INBOX_VIEW, XQOP_EMAIL_INBOX_VIEW,
-                false);
-        
-        if (request) {
-            QList<QVariant> list;
-            list.append(QVariant(mMailboxId.id()));
-        
-            request->setSynchronous(true);
-            request->setArguments(list);
-            request->send();
-            delete request;
+        if (!mAiwRequest) {
+            XQApplicationManager appManager;
+            mAiwRequest = appManager.create(
+                    XQI_EMAIL_INBOX_VIEW, XQOP_EMAIL_INBOX_VIEW,
+                    false);
+            
+            if (mAiwRequest) {
+                connect(mAiwRequest, SIGNAL( requestError(int, const QString&) ), 
+                        this, SLOT( aiwRequestError(int, const QString&) ));
+                connect(mAiwRequest, SIGNAL( requestOk(const QVariant&) ), 
+                        this, SLOT( aiwRequestOk(const QVariant&) ));
+                QList<QVariant> list;
+                list.append(QVariant(mMailboxId.id()));
+            
+                mAiwRequest->setSynchronous(false);
+                mAiwRequest->setArguments(list);
+                mAiwRequest->send();
+            }
         }
     }
     QT_CATCH(...){
@@ -441,21 +447,26 @@
     NM_FUNCTION;
 
     QT_TRY{
-        XQApplicationManager appManager;
-        XQAiwRequest* request = appManager.create(
-                XQI_EMAIL_MESSAGE_VIEW, XQOP_EMAIL_MESSAGE_VIEW,
-                false);
-        
-        if (request) {
-            QList<QVariant> list;
-            list.append(QVariant(mMailboxId.id()));
-            list.append(QVariant(mFolderId.id()));
-            list.append(QVariant(messageId.id()));
-        
-            request->setSynchronous(true);
-            request->setArguments(list);
-            request->send();
-            delete request;
+        if (!mAiwRequest) {
+            XQApplicationManager appManager;
+            mAiwRequest = appManager.create(
+                    XQI_EMAIL_MESSAGE_VIEW, XQOP_EMAIL_MESSAGE_VIEW,
+                    false);
+            
+            if (mAiwRequest) {
+                connect(mAiwRequest, SIGNAL( requestError(int, const QString&) ), 
+                        this, SLOT( aiwRequestError(int, const QString&) ));
+                connect(mAiwRequest, SIGNAL( requestOk(const QVariant&) ), 
+                        this, SLOT( aiwRequestOk(const QVariant&) ));
+                QList<QVariant> list;
+                list.append(QVariant(mMailboxId.id()));
+                list.append(QVariant(mFolderId.id()));
+                list.append(QVariant(messageId.id()));
+            
+                mAiwRequest->setSynchronous(false);
+                mAiwRequest->setArguments(list);
+                mAiwRequest->send();
+            }
         }
     }
     QT_CATCH(...){
@@ -464,3 +475,40 @@
         // creation raise exception.
     }
 }
+
+/*!
+ aiwRequestOk slot.
+ */
+void NmHsWidgetEmailEngine::aiwRequestOk(const QVariant& result)
+{
+    NM_FUNCTION;
+
+    Q_UNUSED(result);
+    
+    deleteAiwRequest();
+}
+
+/*!
+ aiwRequestError slot.
+ */
+void NmHsWidgetEmailEngine::aiwRequestError(int errorCode, const QString& errorMessage)
+{
+    NM_FUNCTION;
+
+    Q_UNUSED(errorCode);
+    Q_UNUSED(errorMessage);
+    
+    deleteAiwRequest();
+}
+
+/*!
+ deleteAiwRequest function.
+ */
+void NmHsWidgetEmailEngine::deleteAiwRequest()
+{
+    NM_FUNCTION;
+
+    delete mAiwRequest;
+    mAiwRequest = NULL;    
+}
+