diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/popservermtm/inc/POPSOFFL.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/popservermtm/inc/POPSOFFL.H Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,157 @@ +// Copyright (c) 2007-2009 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: +// popservermtm module header +// @internalComponent +// @released +// +// + +#if !defined(_POPSOFFL_H__) +#define _POPSOFFL_H__ + +#include +#include // For CMsgActive, TFileName +#include +#include +#include +#include +#include + +class CMsvServerEntry; + +// +// CImPop3OfflineOperationFinder +// +class CImPop3OfflineOperationFinder : public CMsgActive + { +public: + struct TOperationDetails + { + CImOffLineOperation::TOffLineOpType iOpType; + TInt iOperationNumber; + TInt iOperationsOfType; + }; + +public: + static CImPop3OfflineOperationFinder* NewL(CMsvServerEntry& aEntry); + static CImPop3OfflineOperationFinder* NewLC(CMsvServerEntry& aEntry); + + void FindFirstL(TMsvId aServiceId, TBool aQuitting, TRequestStatus &aStatus); + void FindNext(); + + TBool OperationFound() const; + const CImOffLineOperation& OfflineOperation() const; + const TOperationDetails& OperationDetails() const; + + ~CImPop3OfflineOperationFinder(); + +private: + void DoRunL(); + void DoCancel(); + void DoComplete(); + void ConstructL(); + CImPop3OfflineOperationFinder(CMsvServerEntry& aEntry); + void CheckNextChildMessageL(); + inline void AppendOfflineOpsL(); + inline TBool AppropriateOperation(const CImOffLineOperation& aOperation) const; + +private: + enum TImOfflineOpFinderState + { + EPopsOffOpLookingForMessages, + EPopsOffOpGettingOperation + }; + + TOperationDetails iOperationDetails; + CMsvEntrySelection* iChildMessages; + TInt iMessageIndex; + + CArrayVarFlat* iOfflineOperations; + TInt iOperationArrayIndex; + TInt iOperationIndex; + TImOfflineOpFinderState iState; + TMsvId iServiceId; + CMsvServerEntry& iEntry; + TBool iQuitting; + }; + + +class CImPop3TransferMessage; + +// +// CImPop3SetOfflineOps +// +class CImPop3SetOfflineOps : public CMsgActive + { +public: + static CImPop3SetOfflineOps* NewL(CMsvServerEntry& aEntry); + static CImPop3SetOfflineOps* NewLC(CMsvServerEntry& aEntry); + + void AddOfflineOperationL(const CMsvEntrySelection *aMessageSelection, + CImOffLineOperation::TOffLineOpType aOperationType, + TMsvId aTargetFolderId, + TRequestStatus& aStatus); + + void CancelOfflineOperationsL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus); + void ResumeCancelOfflineOperationsL(TRequestStatus& aStatus); + + ~CImPop3SetOfflineOps(); + + void Progress(TPop3Progress& rPop3Progress) const; + +private: + void DoRunL(); + void DoCancel(); + void DoComplete(TInt& status); + CImPop3SetOfflineOps(CMsvServerEntry& aEntry); + void AddOfflineOperationL(); + void CancelOfflineOperationL(); + void CopyLocalMessageL(); + void ConstructL(); + void DeleteOfflineOperationL(TInt messageCounter); + +private: + enum TSetOfflineOpState + { + EAddingOfflineOperations, + ECancellingOfflineOperations, + ECopyingLocalEntries + }; + + TSetOfflineOpState iState; + TInt iMessageCounter; + CMsvEntrySelection* iSourceMessages; + CMsvEntrySelection* iMessagesToCopyLocally; + TMsvId iDestinationEntryId; + CImOffLineOperation::TOffLineOpType iOperationType; + CImOffLineOperation::TOffLineOpType iModifiedOperationType; + CMsvServerEntry& iEntry; + CImPop3TransferMessage* iTransfer; + RArray iOfflineOperationArrayFlag; + }; + +// Utility functions used by the operation finder and the operation setter. + +// +// CImPop3OfflineUtilities +// +class CImPop3OfflineUtilities + { +public: + static void DeleteL(const CImOffLineOperation& aOperation, CMsvServerEntry& aEntry); + static void SetOfflineFlags(const CImOffLineOperationArray& aOperationArray, TMsvEmailEntry& aEntry); + }; + +#endif +