email/imum/Mtms/Src/ImumDisconnectOperation.cpp
branchRCL_3
changeset 60 7fdbb852d323
parent 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Mtms/Src/ImumDisconnectOperation.cpp	Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*       Very simple layer over base class just for setting up progress reporter
+*
+*/
+
+
+#include <eikenv.h>
+#include <eikrutil.h>
+#include <coehelp.h>
+
+#include <ImumInternalApi.h>            // CImumInternalApi
+#include <MsvPrgReporter.h>
+#include <MTMStore.h>
+#include <mtmuibas.h>
+#include <msvuids.h>    // KUidMsvLocalServiceMtm
+#include <miutmsg.h>    // CImEmailOperation
+#include <miutset.h>
+#include <SenduiMtmUids.h>
+
+#include <imum.rsg>
+#include "ImumDisconnectOperation.h"
+#include "EmailUtils.H"
+#include "ImumMtmLogging.h"
+
+const TInt KEmailDisconnectOpPriority = CActive::EPriorityStandard;
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+CImumDisconnectOperation* CImumDisconnectOperation::NewL(CImumInternalApi& aMailboxApi, TRequestStatus& aObserverRequestStatus, MMsvProgressReporter& aReporter, TMsvId aService, TInt aFunctionId, TUid aMtmType)
+    {
+    IMUM_STATIC_CONTEXT( CImumDisconnectOperation::NewL, 0, mtm, KImumMtmLog );
+    IMUM_IN();
+    
+    CImumDisconnectOperation* op = new(ELeave) CImumDisconnectOperation(aMailboxApi, aObserverRequestStatus, aReporter, aService);
+    CleanupStack::PushL(op);
+    op->ConstructL(aFunctionId, aMtmType);
+    CleanupStack::Pop();
+    IMUM_OUT();
+    return op;
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+CImumDisconnectOperation::~CImumDisconnectOperation()
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::~CImumDisconnectOperation, 0, KImumMtmLog );
+    IMUM_IN();
+    IMUM_OUT();
+    
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+const TDesC8& CImumDisconnectOperation::GetErrorProgressL(TInt /*aError*/)
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::GetErrorProgressL, 0, KImumMtmLog );
+    IMUM_IN();
+    IMUM_OUT();
+    
+    // Never gets called since iError always == KErrNone, because DoRunL() cannot leave.
+    return iDummyProg;
+    }
+
+// ----------------------------------------------------------------------------
+// ProgressL
+//
+// ----------------------------------------------------------------------------
+const TDesC8& CImumDisconnectOperation::ProgressL()
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::ProgressL, 0, KImumMtmLog );
+    IMUM_IN();
+    IMUM_OUT();
+    
+    return iDummyProg;
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+void CImumDisconnectOperation::DoRunL()
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::DoRunL, 0, KImumMtmLog );
+    IMUM_IN();
+    
+    CompleteObserver();
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+CImumDisconnectOperation::CImumDisconnectOperation(
+    CImumInternalApi& aMailboxApi,
+    TRequestStatus& aObserverRequestStatus,
+    MMsvProgressReporter& aReporter,
+    TMsvId aService)
+    :
+    CImumOnlineOperation(
+        aMailboxApi,
+        KEmailDisconnectOpPriority,
+        aObserverRequestStatus,
+        aReporter)
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::CImumDisconnectOperation, 0, KImumMtmLog );
+    IMUM_IN();
+    
+    iService = aService;
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+void CImumDisconnectOperation::ConstructL(TInt aFunctionId, TUid aMtmType)
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::ConstructL, 0, KImumMtmLog );
+    IMUM_IN();
+    
+    BaseConstructL(aMtmType);
+    iReporter.SetTitleL( R_EMAIL_DISCONNECT );
+    iReporter.SetProgressDecoder(*this);
+    iReporter.SetCanCancelL( EFalse );
+
+    InvokeClientMtmAsyncFunctionL(aFunctionId, iService, iService);
+    SetActive();
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumDisconnectOperation::
+//
+// ----------------------------------------------------------------------------
+TInt CImumDisconnectOperation::DecodeProgress(
+    const TDesC8& /*aProgress*/,
+    TBuf<CBaseMtmUi::EProgressStringMaxLen>& aReturnString,
+    TInt& aTotalEntryCount,
+    TInt& aEntriesDone,
+    TInt& aCurrentEntrySize,
+    TInt& aCurrentBytesTrans,
+    TBool /*aInternal*/)
+    {
+    IMUM_CONTEXT( CImumDisconnectOperation::DecodeProgress, 0, KImumMtmLog );
+    IMUM_IN();
+    
+    aTotalEntryCount=0;     //  No quantitative progress to return
+    aEntriesDone=0;
+    aCurrentEntrySize=0;
+    aCurrentBytesTrans=0;
+
+    aReturnString.Zero(); // when returning zero then muiu does not change current progress.
+    IMUM_OUT();
+
+    return KErrNone;
+    }
+