ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp
branchRCL_3
changeset 24 d189ee25cf9d
parent 17 67369d1b217f
child 25 3533d4323edc
--- a/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Thu Aug 19 09:38:05 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Tue Aug 31 15:04:17 2010 +0300
@@ -20,9 +20,8 @@
 #include "emailtrace.h"
 #include "ipsplgheaders.h"
 
-// Constants and defines
-const TInt KFetchOpPriority = CActive::EPriorityStandard;
-const TInt KIpsAttaFetchProgressReportInterval = 1000000; // 1 sec
+// <qmail> priority const has been removed, interval changed to 0.2 sec
+const TInt KIpsAttaFetchProgressReportInterval = 200000; // 0.2 sec
 const TInt KIpsAttaFetchRetryInterval = 1000000; // 1 sec
 const TInt KIpsAttaFetchRetryCount = 30;
 
@@ -99,17 +98,18 @@
     }
 
 // ----------------------------------------------------------------------------
+// CIpsPlgImap4FetchAttachmentOp
 // ----------------------------------------------------------------------------
+// <qmail> aFunctionId removed, CMsvEntrySelection& changed to pointer
+// <qmail> MFSMailRequestObserver& changed to pointer
 CIpsPlgImap4FetchAttachmentOp* CIpsPlgImap4FetchAttachmentOp::NewL(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
-    TInt aFunctionId,
     TMsvId aService,
     CIpsPlgTimerOperation& aActivityTimer,
-    const TImImap4GetMailInfo& aGetMailInfo,
-    const CMsvEntrySelection& aSel,
+    const CMsvEntrySelection* aSelection,
     TFSMailMsgId aFSMailBoxId,
-    MFSMailRequestObserver& aFSOperationObserver,
+    MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId )
     {
     FUNC_LOG;
@@ -117,45 +117,42 @@
         ELeave) CIpsPlgImap4FetchAttachmentOp(
         aMsvSession,
         aObserverRequestStatus,
-        aFunctionId,
         aService,
         aActivityTimer,
-        aGetMailInfo,
+        aSelection,
         aFSMailBoxId,
         aFSOperationObserver,
         aFSRequestId );
         
     CleanupStack::PushL( op );
-    op->ConstructL( aSel );
+    op->ConstructL();
     CleanupStack::Pop( op );
     return op;
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
+// <qmail> priority parameter has been removed
+// <qmail> MFSMailRequestObserver& changed to pointer
 CIpsPlgImap4FetchAttachmentOp::CIpsPlgImap4FetchAttachmentOp(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
-    TInt aFunctionId,
     TMsvId aService,
     CIpsPlgTimerOperation& aActivityTimer,
-    const TImImap4GetMailInfo& aGetMailInfo,
+    const CMsvEntrySelection* aSelection,
     TFSMailMsgId aFSMailBoxId,
-    MFSMailRequestObserver& aFSOperationObserver,
+    MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId )
     :
     CIpsPlgOnlineOperation(
-    aMsvSession,
-    KFetchOpPriority,
-    aObserverRequestStatus,
-    aActivityTimer,
-    aFSMailBoxId,
-    aFSOperationObserver,
-    aFSRequestId),
-    iSelection( NULL ),
-    iGetMailInfo(aGetMailInfo),
-    iFunctionId(aFunctionId),
-    iRetryCount( 0 )
+        aMsvSession,
+        aObserverRequestStatus,
+        aActivityTimer,
+        aFSMailBoxId,
+        aFSOperationObserver,
+        aFSRequestId ),
+    	iSelection( aSelection ),
+    	iRetryCount( 0 )
     {
     FUNC_LOG;
     iService = aService;
@@ -170,15 +167,15 @@
     iRetryTimer.Close();
     delete iSelection;
     delete iProgReport;
+    delete iFetchErrorProgress;
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
-void CIpsPlgImap4FetchAttachmentOp::ConstructL( const CMsvEntrySelection& aSel )
+void CIpsPlgImap4FetchAttachmentOp::ConstructL()
     {
     FUNC_LOG;
     BaseConstructL( KUidMsgTypeIMAP4 );
-    iSelection = aSel.CopyL();
     DoConnectL();
     }
 
@@ -190,21 +187,20 @@
     iState = EStateConnecting;
     iStatus = KRequestPending;
 
+    // <qmail> priority parameter has been removed
     CIpsPlgImap4ConnectOp* connOp = CIpsPlgImap4ConnectOp::NewL(
         iMsvSession,
-        KFetchOpPriority,
         iStatus, 
         iService,
         *iActivityTimer,
         iFSMailboxId,
-        iFSOperationObserver,
-        iFSRequestId,
+        NULL, // no observer for subopertaion
+        0,    // no requestId needed
         NULL, // event handler not needed whin plain connect
-        ETrue,
-        EFalse );
+        ETrue );
         
-    delete iOperation;
-    iOperation = connOp;
+    delete iSubOperation;
+    iSubOperation = connOp;
 
     SetActive();
     }
@@ -231,12 +227,10 @@
         {
         case EStateConnecting:
             {
-            // get result of connect operation
-            TInt err = iStatus.Int();
-
-            if( err != KErrNone )
+            // <qmail> Connected() usage
+            if ( !Connected() )
                 {
-                CompleteObserver( err == KErrCancel ? err : KErrCouldNotConnect );
+                CompleteObserver( KErrCouldNotConnect );
                 return;
                 }
             iRetryCount = 0;
@@ -268,9 +262,9 @@
                 }
             else
                 {
-                if( err != KErrNone && iOperation )
+                if( err != KErrNone && iSubOperation )
                     {
-                    iFetchErrorProgress = iOperation->ProgressL().AllocL();
+                    iFetchErrorProgress = iSubOperation->ProgressL().AllocL();
                     }
                 
                 iState = EStateIdle;
@@ -294,9 +288,9 @@
         return *iFetchErrorProgress;
         }
     
-    if ( iOperation )
+    if ( iSubOperation )
         {
-        iProgress.Copy( iOperation->ProgressL() );
+        iProgress.Copy( iSubOperation->ProgressL() );
         }
     else
         {
@@ -316,9 +310,9 @@
     FUNC_LOG;
     TInt error = KErrNone;
     TFSProgress fsProgress = { TFSProgress::EFSStatus_Waiting, 0, 0, KErrNone };
-    if ( iOperation && iState == EStateFetching )
+    if ( iSubOperation && iState == EStateFetching )
         {
-        TRAP(error, iProgress.Copy( iOperation->ProgressL() ) );
+        TRAP(error, iProgress.Copy( iSubOperation->ProgressL() ) );
         }
     
     if ( error == KErrNone )
@@ -342,8 +336,14 @@
         {
         User::Leave( error );
         }
-    
-    iFSOperationObserver.RequestResponseL( fsProgress, iFSRequestId );
+
+// <qmail>
+    // signal observer if it exists
+    if ( iFSOperationObserver )
+        {
+        iFSOperationObserver->RequestResponseL( fsProgress, iFSRequestId );
+        }
+// </qmail>
     }
 
 // ----------------------------------------------------------------------------
@@ -399,37 +399,37 @@
     iState = EStateFetching;
 
     // Switch operations.
-    delete iOperation;
-    iOperation = NULL;
+    delete iSubOperation;
+    iSubOperation = NULL;
     iStatus = KRequestPending;
 
     iProgReport = CIpsFetchProgReport::NewL( *this );
 
     // Filters are not used when performing 'fetch' operation, 
     // use normal getmail info instead
-    TPckg<TImImap4GetMailInfo> param(iGetMailInfo);
-    InvokeClientMtmAsyncFunctionL( iFunctionId, *iSelection, iService, param );
+// <qmail>
+    TPckgBuf<TImImap4GetMailInfo> param;
+    TImImap4GetMailInfo& options = param();
+    options.iMaxEmailSize = KMaxTInt32;
+    options.iGetMailBodyParts = EGetImap4EmailAttachments;
+    options.iDestinationFolder = 0; // not used
+
+    InvokeClientMtmAsyncFunctionL( KIMAP4MTMPopulate, *iSelection, param ); // <qmail> 1 param removed
+// </qmail>
     SetActive();
     }
     
+// <qmail> GetEngineProgress function removed
+
+// <qmail> new func to this op
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------    
-TInt CIpsPlgImap4FetchAttachmentOp::GetEngineProgress( const TDesC8& aProgress )
+TIpsOpType CIpsPlgImap4FetchAttachmentOp::IpsOpType() const
     {
     FUNC_LOG;
-    if( !aProgress.Length() )
-        {
-        return KErrNone;
-        }
-    else
-        {
-        TPckgBuf<TImap4CompoundProgress> paramPack;
-        paramPack.Copy( aProgress );
-        const TImap4GenericProgress& progress = paramPack().iGenericProgress;
-
-        return progress.iErrorCode;
-        }    
-    }        
+    return EIpsOpTypeFetchAttachmentOp;
+    }
+// </qmail>
 
 
 // End of File