--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Mtms/Src/ImumEditOperation.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,205 @@
+/*
+* 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 operation for launching editors
+*
+*/
+
+
+
+#include <eikenv.h>
+#include <eikrutil.h>
+#include <coehelp.h>
+
+#include <MsvPrgReporter.h>
+#include <MTMStore.h>
+#include <mtmuibas.h>
+#include <mtmuidef.hrh>
+#include <msvuids.h> // KUidMsvLocalServiceMtm
+#include <miutmsg.h> // CImEmailOperation
+#include <miutset.h>
+
+#include "ImumEditOperation.h"
+#include "EmailUtils.H"
+#include "PROGTYPE.H"
+#include "ImumMtmLogging.h"
+
+const TInt KEmailEditOpPriority = CActive::EPriorityHigh;
+
+// ----------------------------------------------------------------------------
+// NewL
+// ----------------------------------------------------------------------------
+CImumEditOperation* CImumEditOperation::NewL(
+ CImumInternalApi& aMailboxApi,
+ TRequestStatus& aObserverRequestStatus,
+ TUid aMtmType,
+ const TEmailEditParams& aParams,
+ TBool aSendReceipts)
+ {
+ IMUM_STATIC_CONTEXT( CImumEditOperation::NewL, 0, mtm, KImumMtmLog );
+ IMUM_IN();
+ // static
+ CImumEditOperation* op = new(ELeave) CImumEditOperation(
+ aMailboxApi, aObserverRequestStatus, aMtmType, aParams);
+ CleanupStack::PushL(op);
+ op->ConstructL(aSendReceipts);
+ CleanupStack::Pop();
+ IMUM_OUT();
+ return op;
+ }
+
+// ----------------------------------------------------------------------------
+// ~CImumEditOperation
+// ----------------------------------------------------------------------------
+CImumEditOperation::~CImumEditOperation()
+ {
+ IMUM_CONTEXT( CImumEditOperation::~CImumEditOperation, 0, KImumMtmLog );
+ IMUM_IN();
+
+ Cancel();
+ delete iOperation;
+ delete iMsgEntry;
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// ProgressL
+// ----------------------------------------------------------------------------
+const TDesC8& CImumEditOperation::ProgressL()
+ {
+ IMUM_CONTEXT( CImumEditOperation::ProgressL, 0, KImumMtmLog );
+ IMUM_IN();
+ IMUM_OUT();
+
+ return iProgress;
+ }
+
+// ----------------------------------------------------------------------------
+// DoCancel
+// ----------------------------------------------------------------------------
+void CImumEditOperation::DoCancel()
+ {
+ IMUM_CONTEXT( CImumEditOperation::DoCancel, 0, KImumMtmLog );
+ IMUM_IN();
+
+ if(iOperation)
+ {
+ iOperation->Cancel();
+ }
+ iProgress().iError = KErrCancel;
+ TRequestStatus* status = &iObserverRequestStatus;
+ User::RequestComplete(status, KErrNone);
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// RunL
+// ----------------------------------------------------------------------------
+void CImumEditOperation::RunL()
+ {
+ IMUM_CONTEXT( CImumEditOperation::RunL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ TRequestStatus* status = &iObserverRequestStatus;
+ switch(iState)
+ {
+ case EStateLaunching:
+ // Completed.
+ User::RequestComplete(status, iOperation->iStatus.Int() /*KErrNone*/);
+ break;
+ case EStateIdle:
+ default:
+ break;
+ }
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// CImumEditOperation
+// ----------------------------------------------------------------------------
+CImumEditOperation::CImumEditOperation(
+ CImumInternalApi& aMailboxApi,
+ TRequestStatus& aObserverRequestStatus,
+ TUid aMtmType,
+ const TEmailEditParams& aParams)
+ :
+ CMsvOperation(aMailboxApi.MsvSession(), KEmailEditOpPriority, aObserverRequestStatus),
+ iState(EStateIdle),
+ iEditParams(aParams)
+ {
+ IMUM_CONTEXT( CImumEditOperation::CImumEditOperation, 0, KImumMtmLog );
+ IMUM_IN();
+
+ CActiveScheduler::Add(this);
+ iMtm = aMtmType;
+
+ TEmailEditProgress& prog = iProgress();
+ prog.iError = KErrNone;
+ prog.iId = iEditParams.iEditorParams.iId;
+ IMUM_OUT();
+ }
+
+// ----------------------------------------------------------------------------
+// ConstructL
+// ----------------------------------------------------------------------------
+void CImumEditOperation::ConstructL(TBool /*aSendReceipts*/)
+ {
+ IMUM_CONTEXT( CImumEditOperation::ConstructL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ iMsgEntry = iMsvSession.GetEntryL(iEditParams.iEditorParams.iId);
+ TMsvEmailEntry entry(iMsgEntry->Entry());
+ iService = entry.iServiceId;
+
+ DoLaunchEditorL();
+ IMUM_OUT();
+
+ }
+
+// ----------------------------------------------------------------------------
+// DoLaunchEditorL
+// ----------------------------------------------------------------------------
+void CImumEditOperation::DoLaunchEditorL()
+ {
+ IMUM_CONTEXT( CImumEditOperation::DoLaunchEditorL, 0, KImumMtmLog );
+ IMUM_IN();
+
+ if(iOperation)
+ {
+ delete iOperation;
+ iOperation = NULL;
+ }
+
+ TEditorParameters launchParams(iEditParams.iEditorParams);
+ launchParams.iFlags &= ~(EMtmUiFlagEditorPreferEmbedded | EMtmUiFlagEditorNoWaitForExit);
+ launchParams.iFlags |= (iEditParams.iPreferences & EMtmUiFlagEditorPreferEmbedded) ? (EMsgLaunchEditorEmbedded) : (0);
+ launchParams.iFlags |= (iEditParams.iPreferences & EMtmUiFlagEditorNoWaitForExit) ? (0) : (EMsgLaunchEditorThenWait);
+
+ iOperation = MsgEditorLauncher::LaunchEditorApplicationL(
+ iMsvSession,
+ iMtm,
+ iStatus,
+ launchParams,
+ iEditParams.
+ iEditorFileName,
+ KNullDesC8);
+
+ iObserverRequestStatus = KRequestPending;
+ iState = EStateLaunching;
+ SetActive();
+ IMUM_OUT();
+ }
+
+// end of file
+