diff -r 000000000000 -r 72b543305e3a email/imum/Mtms/Src/SmtpCancelSendingOp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Mtms/Src/SmtpCancelSendingOp.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,144 @@ +/* +* 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: +* SMTP Cancel Sending operation +* +*/ + +#include +#include + +#include "SmtpCancelSendingOp.h" +#include "ImumMtmLogging.h" + +// CONSTANTS +const TInt KCancelSendOpPriority = CActive::EPriorityStandard; + + +CSmtpCancelSendingOp* CSmtpCancelSendingOp::NewL(CImumInternalApi& aMailboxApi, TRequestStatus& aObserverRequestStatus, CMsvEntrySelection* aEntrySelection) + { + IMUM_STATIC_CONTEXT( CSmtpCancelSendingOp::NewL, 0, mtm, KImumMtmLog ); + + CSmtpCancelSendingOp* op = new(ELeave) CSmtpCancelSendingOp(aMailboxApi, aObserverRequestStatus, aEntrySelection); + CleanupStack::PushL(op); + op->ConstructL(); + CleanupStack::Pop(); + IMUM_OUT(); + return op; + } + +CSmtpCancelSendingOp::~CSmtpCancelSendingOp() + { + IMUM_CONTEXT( CSmtpCancelSendingOp::~CSmtpCancelSendingOp, 0, KImumMtmLog ); + IMUM_IN(); + + delete iEntry; + IMUM_OUT(); + } + +const TDesC8& CSmtpCancelSendingOp::ProgressL() + { + IMUM_CONTEXT( CSmtpCancelSendingOp::ProgressL, 0, KImumMtmLog ); + IMUM_IN(); + + if( (iOperation) && (iProgress().iError == KErrNone) ) + { + IMUM_OUT(); + return iOperation->ProgressL(); + } + IMUM_OUT(); + return iProgress; + } + +CSmtpCancelSendingOp::CSmtpCancelSendingOp(CImumInternalApi& aMailboxApi, TRequestStatus& aObserverRequestStatus, CMsvEntrySelection* aEntrySelection) +: CSelectionOperationBase(aMailboxApi, KCancelSendOpPriority, aObserverRequestStatus, aEntrySelection) + { + IMUM_CONTEXT( CSmtpCancelSendingOp::CSmtpCancelSendingOp, 0, KImumMtmLog ); + IMUM_IN(); + + CActiveScheduler::Add(this); + SetSelectionOwnershipExternal(EFalse); + IMUM_OUT(); + } + +void CSmtpCancelSendingOp::ConstructL() + { + IMUM_CONTEXT( CSmtpCancelSendingOp::ConstructL, 0, KImumMtmLog ); + IMUM_IN(); + + iEntry = iMsvSession.GetEntryL(KMsvGlobalOutBoxIndexEntryId); + iStatus = KRequestPending; + CSelectionOperationBase::StartL(); + SetActive(); + IMUM_OUT(); + } + +CMsvOperation* CSmtpCancelSendingOp::CreateOperationL(TMsvId aMsvId) + { + IMUM_CONTEXT( CSmtpCancelSendingOp::CreateOperationL, 0, KImumMtmLog ); + IMUM_IN(); + + CMsvOperation* op = NULL; + iEntry->SetEntryL(aMsvId); + TMsvEntry tentry(iEntry->Entry()); + if(tentry.SendingState() != KMsvSendStateSuspended) + { + tentry.SetSendingState(KMsvSendStateSuspended); + op = iEntry->ChangeL(tentry, iStatus);; + } + else + { + op = CMsvCompletedOperation::NewL(iMsvSession, KUidMsvLocalServiceMtm, iProgress, KMsvLocalServiceIndexEntryId, iStatus, KErrNone); + } + iMtm = op->Mtm(); + IMUM_OUT(); + return op; + } + +TBool CSmtpCancelSendingOp::StopOnError(TInt /*aErrorCode*/) + { + IMUM_CONTEXT( CSmtpCancelSendingOp::StopOnError, 0, KImumMtmLog ); + IMUM_IN(); + IMUM_OUT(); + + return EFalse; + } + +void CSmtpCancelSendingOp::OpRunError(TInt aErrorCode) + { + IMUM_CONTEXT( CSmtpCancelSendingOp::OpRunError, 0, KImumMtmLog ); + IMUM_IN(); + + TMsvLocalOperationProgress& prog = iProgress(); + prog.iType = TMsvLocalOperationProgress::ELocalChanged; + prog.iTotalNumberOfEntries = NumItems(); + prog.iNumberCompleted = CurrentItemIndex(); + prog.iNumberFailed++; + prog.iNumberRemaining = (prog.iTotalNumberOfEntries) - (prog.iNumberCompleted); + prog.iError = aErrorCode; + IMUM_OUT(); + } + +TInt CSmtpCancelSendingOp::CheckForError(const TDesC8& aProgress) + { + IMUM_CONTEXT( CSmtpCancelSendingOp::CheckForError, 0, KImumMtmLog ); + IMUM_IN(); + + iProgress.Copy(aProgress); + IMUM_OUT(); + return iProgress().iError; + } + +// End of file +