diff -r 238255e8b033 -r 84d9eb65b26f email/pop3andsmtpmtm/imapservermtm/inc/IMAPCOMP.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/imapservermtm/inc/IMAPCOMP.H Mon May 03 12:29:07 2010 +0300 @@ -0,0 +1,125 @@ +// Copyright (c) 1998-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: +// CImImap4Compound header +// +// + +#if !defined(__IMAPCOMP_H__) +#define __IMAPCOMP_H__ + +#include +#include +#include + +// Forward declarations +class CImImap4Session; + +class CImImap4Compound : public CMsgActive +/** +@internalComponent +@released +*/ + { +public: + ~CImImap4Compound(); + static CImImap4Compound* NewL(CImImap4Session* aSession); + void ConstructL(CImImap4Session* aSession); + void SetSession(CImImap4Session* aSession); + void SetEntry(CMsvServerEntry* aEntry); + + // The compound operations we provide + void CopyToLocalL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void MoveToLocalL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void CopyWithinServiceL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void CopyWithinServiceL(TRequestStatus& aStatus, const CMsvEntrySelection& aSourceSel, const TMsvId aDestination); + void MoveWithinServiceL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void MoveWithinServiceL(TRequestStatus& aStatus, const CMsvEntrySelection& aSourceSel, const TMsvId aDestination); + void CopyFromLocalL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void MoveFromLocalL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + void DeleteL(TRequestStatus& aStatus, const TMsvId aSource); + void DeleteL(TRequestStatus& aStatus, const CMsvEntrySelection& aSourceSel); + void DeleteFolderL(TRequestStatus& aStatus, const TMsvId aSource); + void NewOnlySyncL(TRequestStatus& aStatus, const TMsvId aFolder); + void FullSyncL(TRequestStatus& aStatus, const TMsvId aFolder); + void SelectL(TRequestStatus& aStatus, const TMsvId aFolder); + void SynchroniseL(TRequestStatus& aStatus); + void CreateL(TRequestStatus& aStatus, const TMsvId aParent, const TDesC& aLeafName, const TBool aFolder); + void RenameL(TRequestStatus& aStatus, const TMsvId aTarget, const TDesC& aNewName); + void PopulateL(TRequestStatus& aStatus, const TMsvId aSource, TImImap4GetPartialMailInfo aGetPartialMailInfo); + void SetMessageCount(const TInt aCount); + // Compound operations for when called from the Synchronise task + void SyncCopyToLocalL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination); + + void UpdatePartialMailInfoToDefaults(TMsvId aDestination); + // Progress reporting + TImap4GenericProgress Progress(); + +private: + CImImap4Compound(); + void DoRunL(); + TBool DoRunLoopL(); + void DoCancel(); + + TMsvId FindFolderL(const TMsvId aMessage); + void GenericCopyL(TRequestStatus& aStatus, const TMsvId aSource, const TMsvId aDestination, TInt* aSequence); + void GenericCopyL(TRequestStatus& aStatus, const CMsvEntrySelection& aSourceSel, const TMsvId aDestination, TInt* aSequence); + void SetEntryL(const TMsvId aId); + + // Sequences of operations + TInt SeqPopulateAttachment[3]; + TInt SeqCopyToLocal[7]; + TInt SeqMoveToLocal[8]; + TInt SeqCopyWithinService[8]; + TInt SeqMoveWithinService[9]; + TInt SeqCopyFromLocal[4]; + TInt SeqMoveFromLocal[8]; + TInt SeqDelete[6]; + TInt SeqDeleteFolder[8]; + TInt SeqNewSync[6]; + TInt SeqFullSync[6]; + TInt SeqSelect[3]; + TInt SeqSynchronise[5]; + TInt SeqCreate[5]; + TInt SeqRename[5]; + TInt SeqSyncCopyToLocal[3]; + +private: + // IMAP4 session to use + CImImap4Session* iSession; + + // Internal state + TInt iStep; + TInt* iSequence; + TMsvId iSource; + TInt iSelectionStillToCopy; + TInt iSelectionStillToDelete; + TInt iMessageSelection; + CMsvEntrySelection* iSourceSel; + TMsvId iSourceFolder; + TMsvId iDestinationFolder; + TFileName iLeafName; + TBool iFolder; + TBool iIdleBeforeCommand; + TBool iPopulateCommand; + TBool iIdleBeforeFirstPopulate; + TInt iMsgCount; + + // Access to message database + CMsvServerEntry* iEntry; + + // saved partial populate info + TImImap4GetPartialMailInfo iGetPartialMailInfo; + }; + +#endif