email/imum/Mtms/Src/SmtpCancelSendingOp.cpp
changeset 79 2981cb3aa489
parent 0 72b543305e3a
equal deleted inserted replaced
25:84d9eb65b26f 79:2981cb3aa489
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *       SMTP Cancel Sending operation
       
    16 *
       
    17 */
       
    18 
       
    19 #include <msvids.h>
       
    20 #include <msvuids.h>
       
    21 
       
    22 #include "SmtpCancelSendingOp.h"
       
    23 #include "ImumMtmLogging.h"
       
    24 
       
    25 // CONSTANTS
       
    26 const TInt KCancelSendOpPriority = CActive::EPriorityStandard;
       
    27 
       
    28 
       
    29 CSmtpCancelSendingOp* CSmtpCancelSendingOp::NewL(CImumInternalApi& aMailboxApi, TRequestStatus& aObserverRequestStatus, CMsvEntrySelection* aEntrySelection)
       
    30     {
       
    31     IMUM_STATIC_CONTEXT( CSmtpCancelSendingOp::NewL, 0, mtm, KImumMtmLog );
       
    32     
       
    33     CSmtpCancelSendingOp* op = new(ELeave) CSmtpCancelSendingOp(aMailboxApi, aObserverRequestStatus, aEntrySelection);
       
    34     CleanupStack::PushL(op);
       
    35     op->ConstructL();
       
    36     CleanupStack::Pop();
       
    37     IMUM_OUT();
       
    38     return op;
       
    39     }
       
    40 
       
    41 CSmtpCancelSendingOp::~CSmtpCancelSendingOp()
       
    42     {
       
    43     IMUM_CONTEXT( CSmtpCancelSendingOp::~CSmtpCancelSendingOp, 0, KImumMtmLog );
       
    44     IMUM_IN();
       
    45     
       
    46     delete iEntry;
       
    47     IMUM_OUT();
       
    48     }
       
    49 
       
    50 const TDesC8& CSmtpCancelSendingOp::ProgressL()
       
    51     {
       
    52     IMUM_CONTEXT( CSmtpCancelSendingOp::ProgressL, 0, KImumMtmLog );
       
    53     IMUM_IN();
       
    54     
       
    55     if( (iOperation) && (iProgress().iError == KErrNone) )
       
    56         {
       
    57         IMUM_OUT();
       
    58         return iOperation->ProgressL();
       
    59         }
       
    60     IMUM_OUT();
       
    61     return iProgress;
       
    62     }
       
    63 
       
    64 CSmtpCancelSendingOp::CSmtpCancelSendingOp(CImumInternalApi& aMailboxApi, TRequestStatus& aObserverRequestStatus, CMsvEntrySelection* aEntrySelection)
       
    65 : CSelectionOperationBase(aMailboxApi, KCancelSendOpPriority, aObserverRequestStatus, aEntrySelection)
       
    66     {
       
    67     IMUM_CONTEXT( CSmtpCancelSendingOp::CSmtpCancelSendingOp, 0, KImumMtmLog );
       
    68     IMUM_IN();
       
    69     
       
    70     CActiveScheduler::Add(this);
       
    71     SetSelectionOwnershipExternal(EFalse);
       
    72     IMUM_OUT();
       
    73     }
       
    74 
       
    75 void CSmtpCancelSendingOp::ConstructL()
       
    76     {
       
    77     IMUM_CONTEXT( CSmtpCancelSendingOp::ConstructL, 0, KImumMtmLog );
       
    78     IMUM_IN();
       
    79     
       
    80     iEntry = iMsvSession.GetEntryL(KMsvGlobalOutBoxIndexEntryId);
       
    81     iStatus = KRequestPending;
       
    82     CSelectionOperationBase::StartL();
       
    83     SetActive();
       
    84     IMUM_OUT();
       
    85     }
       
    86 
       
    87 CMsvOperation* CSmtpCancelSendingOp::CreateOperationL(TMsvId aMsvId)
       
    88     {
       
    89     IMUM_CONTEXT( CSmtpCancelSendingOp::CreateOperationL, 0, KImumMtmLog );
       
    90     IMUM_IN();
       
    91     
       
    92     CMsvOperation* op = NULL;
       
    93     iEntry->SetEntryL(aMsvId);
       
    94     TMsvEntry tentry(iEntry->Entry());
       
    95     if(tentry.SendingState() != KMsvSendStateSuspended)
       
    96         {
       
    97         tentry.SetSendingState(KMsvSendStateSuspended);
       
    98         op = iEntry->ChangeL(tentry, iStatus);;
       
    99         }
       
   100     else
       
   101         {
       
   102         op = CMsvCompletedOperation::NewL(iMsvSession, KUidMsvLocalServiceMtm, iProgress, KMsvLocalServiceIndexEntryId, iStatus, KErrNone);
       
   103         }
       
   104     iMtm = op->Mtm();
       
   105     IMUM_OUT();
       
   106     return op;
       
   107     }
       
   108 
       
   109 TBool CSmtpCancelSendingOp::StopOnError(TInt /*aErrorCode*/)
       
   110     {
       
   111     IMUM_CONTEXT( CSmtpCancelSendingOp::StopOnError, 0, KImumMtmLog );
       
   112     IMUM_IN();
       
   113     IMUM_OUT();
       
   114     
       
   115     return EFalse;
       
   116     }
       
   117 
       
   118 void CSmtpCancelSendingOp::OpRunError(TInt aErrorCode)
       
   119     {
       
   120     IMUM_CONTEXT( CSmtpCancelSendingOp::OpRunError, 0, KImumMtmLog );
       
   121     IMUM_IN();
       
   122     
       
   123     TMsvLocalOperationProgress& prog = iProgress();
       
   124     prog.iType = TMsvLocalOperationProgress::ELocalChanged;
       
   125     prog.iTotalNumberOfEntries = NumItems();
       
   126     prog.iNumberCompleted = CurrentItemIndex();
       
   127     prog.iNumberFailed++;
       
   128     prog.iNumberRemaining = (prog.iTotalNumberOfEntries) - (prog.iNumberCompleted);
       
   129     prog.iError = aErrorCode;
       
   130     IMUM_OUT();
       
   131     }
       
   132 
       
   133 TInt CSmtpCancelSendingOp::CheckForError(const TDesC8& aProgress)
       
   134     {
       
   135     IMUM_CONTEXT( CSmtpCancelSendingOp::CheckForError, 0, KImumMtmLog );
       
   136     IMUM_IN();
       
   137     
       
   138     iProgress.Copy(aProgress);
       
   139     IMUM_OUT();
       
   140     return iProgress().iError;
       
   141     }
       
   142 
       
   143 // End of file
       
   144