--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Mtms/Src/ImumFetchAndEditOperation.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,208 @@
+/*
+* 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:
+* Common email MTM wrapper operation
+*
+*/
+
+
+#include <eikenv.h>
+#include <eikrutil.h>
+#include <coehelp.h>
+#include <MsvPrgReporter.h>
+#include <MTMStore.h>
+#include <mtmuibas.h>
+#include <msvuids.h> // KUidMsvLocalServiceMtm
+#include <miutmsg.h> // CImEmailOperation
+#include <miutset.h>
+
+#include "ImumFetchAndEditOperation.h"
+#include "ImumEditOperation.h"
+#include "EmailUtils.H"
+#include "ImumPanic.h"
+#include "ImumMtmLogging.h"
+
+const TInt KEmailFetchAndEditOpPriority = CActive::EPriorityStandard;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ----------------------------------------------------------------------------
+// CImumFetchAndEditOperation
+// ----------------------------------------------------------------------------
+CImumFetchAndEditOperation::CImumFetchAndEditOperation(
+ CImumInternalApi& aMailboxApi,
+ TRequestStatus& aObserverRequestStatus,
+ MMsvProgressReporter& aReporter,
+ const TEmailEditParams& aParams,
+ TBool aAckReceipts)
+ :
+ CImumDiskSpaceObserverOperation(
+ aMailboxApi,
+ KEmailFetchAndEditOpPriority,
+ aObserverRequestStatus,
+ aReporter),
+ iState(EStateIdle),
+ iEditParams(aParams),
+ iAckReceipts(aAckReceipts)
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::CImumFetchAndEditOperation, 0, KImumMtmLog );
+ IMUM_IN();
+ IMUM_OUT();
+
+ }
+
+// ----------------------------------------------------------------------------
+// NewL
+// ----------------------------------------------------------------------------
+CImumFetchAndEditOperation* CImumFetchAndEditOperation::NewL(
+ CImumInternalApi& aMailboxApi,
+ TRequestStatus& aObserverRequestStatus,
+ MMsvProgressReporter& aReporter,
+ const TEmailEditParams& aParams,
+ TBool aAckReceipts )
+ {
+ IMUM_STATIC_CONTEXT( CImumFetchAndEditOperation::NewL, 0, mtm, KImumMtmLog );
+ IMUM_IN();
+ IMUM_OUT();
+
+ return new ( ELeave ) CImumFetchAndEditOperation(
+ aMailboxApi, aObserverRequestStatus,
+ aReporter, aParams, aAckReceipts );
+ }
+
+// ----------------------------------------------------------------------------
+// ~CImumFetchAndEditOperation
+// ----------------------------------------------------------------------------
+CImumFetchAndEditOperation::~CImumFetchAndEditOperation()
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::~CImumFetchAndEditOperation, 0, KImumMtmLog );
+ IMUM_IN();
+ IMUM_OUT();
+
+ }
+
+// ----------------------------------------------------------------------------
+// GetErrorProgressL
+// ----------------------------------------------------------------------------
+const TDesC8& CImumFetchAndEditOperation::GetErrorProgressL( TInt aError )
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::GetErrorProgressL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ // DoRunL() left, failed to switch to launch editor state.
+ iLocalProgress().iType = TMsvLocalOperationProgress::ELocalNone;
+ iLocalProgress().iTotalNumberOfEntries = 0;
+ iLocalProgress().iNumberCompleted = 0;
+ iLocalProgress().iNumberFailed = 0;
+ iLocalProgress().iNumberRemaining = 0;
+ iLocalProgress().iError = aError;
+ iLocalProgress().iId = iEditParams.iEditorParams.iId;
+ IMUM_OUT();
+ return iLocalProgress;
+ }
+
+// ----------------------------------------------------------------------------
+// SetFetchOpL
+// ----------------------------------------------------------------------------
+void CImumFetchAndEditOperation::SetFetchOpL( CMsvOperation* aFetchOp )
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::SetFetchOpL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ __ASSERT_ALWAYS( aFetchOp, User::Panic( KImumMtmUiPanic, EPanicOpBadFetchOp ) );
+ __ASSERT_ALWAYS( !iOperation, User::Panic( KImumMtmUiPanic, EPanicAlreadySetFetchOp ) );
+ iOperation = aFetchOp;
+ iService = iOperation->Service();
+ BaseConstructL( iOperation->Mtm() );
+ iState = EStateFetching;
+ iStatus = KRequestPending;
+ SetActive();
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// RequestStatus
+// ----------------------------------------------------------------------------
+TRequestStatus& CImumFetchAndEditOperation::RequestStatus()
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::RequestStatus, 0, KImumMtmLog );
+ IMUM_IN();
+ IMUM_OUT();
+
+ return iStatus;
+ }
+
+// ----------------------------------------------------------------------------
+// DoRunL
+// ----------------------------------------------------------------------------
+void CImumFetchAndEditOperation::DoRunL()
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::DoRunL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ iActualMtm = iMtm;
+ iMtm = KUidMsvLocalServiceMtm; // Error progress is local MTM.
+ switch(iState)
+ {
+ case EStateFetching:
+ // The fetch has completed.
+ {
+ if(KErrNone == GetOperationCompletionCodeL())
+ {
+ DoEditL();
+ }
+ else
+ {
+ CompleteObserver();
+ }
+ }
+ break;
+ case EStateEditing:
+ // Edit has completed.
+ CompleteObserver( iOperation->iStatus.Int() );
+ iState = EStateComplete;
+ break;
+
+ case EStateIdle:
+ case EStateComplete:
+ default:
+ break;
+ }
+ iMtm = iOperation->Mtm(); // Completed without error, reset MTM.
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// DoEditL
+// ----------------------------------------------------------------------------
+void CImumFetchAndEditOperation::DoEditL()
+ {
+ IMUM_CONTEXT( CImumFetchAndEditOperation::DoEditL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ iReporter.MakeProgressVisibleL( EFalse ); // Get rid of the dialog.
+ iMtmUi->BaseMtm().SwitchCurrentEntryL( iEditParams.iEditorParams.iId );
+ delete iOperation;
+ iOperation = NULL;
+ iStatus = KRequestPending;
+
+ iOperation = CImumEditOperation::NewL(
+ iMailboxApi, iStatus, iActualMtm, iEditParams, iAckReceipts );
+
+ iState = EStateEditing;
+ SetActive();
+ IMUM_OUT();
+ }
+
+// End of File