diff -r 000000000000 -r 72b543305e3a email/imap4mtm/imapofflinecontrol/inc/cimapofflinecontrol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imap4mtm/imapofflinecontrol/inc/cimapofflinecontrol.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,128 @@ +// Copyright (c) 2006-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: +// cimapofflinecontrol.cpp.h +// +// + +#ifndef __CIMAPOFFLINECONTROL_H__ +#define __CIMAPOFFLINECONTROL_H__ + +#include +#include + +class CMsvServerEntry; +class CMsvEntrySelection; +class TImap4CompoundProgress; + +// enums for use with MtmFunctionId +enum + { + EFnOffLineOpMoveDelete, + EFnOffLineOpPopulate + }; + +class CImapOfflineControl : public CMsgActive +/** +@internalComponent +@released +*/ + { +public: + enum TImap4OpType + { + EImap4OpCopyToLocal, + EImap4OpMoveToLocal, + EImap4OpCopyFromLocal, + EImap4OpMoveFromLocal, + EImap4OpCopyWithinService, + EImap4OpMoveWithinService, + EImap4OpPopulate, + EImap4OpDelete, + EImap4OpUndelete, + EImap4OpMoveTypeDelete + }; + +public: + ~CImapOfflineControl(); + IMPORT_C static CImapOfflineControl* NewL(CMsvServerEntry& aEntry); + + // add the given offline operation to the appropriate place + IMPORT_C void StoreOfflineCommandL(TImap4OpType aOperation, + const CMsvEntrySelection& aSelection, + TMsvId aDestination, + TRequestStatus& aStatus); + + IMPORT_C void StoreOfflineCommandL(TImap4OpType aOperation, + const CMsvEntrySelection& aSelection, + TMsvId aDestination, + const TDesC8& aParams, + TRequestStatus& aStatus); + + // aSelection contains a list of folders and services. Remove any + // offline operations contained within them + IMPORT_C void CancelOffLineOperationsL(const CMsvEntrySelection& aSelection); + IMPORT_C TMsvId IdIsLocalL(TMsvId aId); + IMPORT_C CImOffLineOperationArray* OffLineOpArrayL(TMsvId aId); + IMPORT_C void SetOffLineOpArrayL(TMsvId aId, CImOffLineOperationArray& aArray); + IMPORT_C TMsvId FindShadowIdL(const CImOffLineOperation& aOp); + IMPORT_C TImap4CompoundProgress Progress(); + +private: + void ConstructL(); + CImapOfflineControl(CMsvServerEntry& aEntry); + TBool FindShadowIdsL(const CImOffLineOperation& aOp, CMsvEntrySelection& aSelection); + TBool OffLineOpIsCopy(const CImOffLineOperation& aOp); + TImDisconnectedOperationType OffLineOpToDisconnectedOp(const CImOffLineOperation& aOp); + TInt PosVal(const CImOffLineOperation& aOp); + void SaveOperationL(const CImOffLineOperation& aOperation); + TBool FindOffLineOpByIdL(TMsvId aId, TMsvId aDestFolder, + CImOffLineOperation& aOp, TBool aDelete); + void UndeleteOperationL(TMsvId aId, TMsvId aDestId, TBool aConvertMoveToCopy, + TImDisconnectedOperationType aDisconnected =ENoDisconnectedOperations); + void MakeCopyMoveShadowL(const CImOffLineOperation& aOp); + void MakeShadowL(const CImOffLineOperation& aOp); + + void UndoOfflineOpL(const CImOffLineOperation& aOp, TBool aClearMultiples); + + void SetEntryL(TMsvId aId); + void ChangeEntryL(TMsvEntry& aEntry); + void DeleteEntryL(TMsvId aId); + + TMsvId FolderOfL(TMsvId aId); + TMsvId FindOffLineSaveFolderL(TMsvId aId, TMsvId aDestId); + TMsvId MessageOfL(TMsvId aId); + TMsvId ServiceOfL(TMsvId aId); + + void PrepareLocalOpL(TMsvId aId); + TBool DoLocalOpL(); + +protected: + void DoCancel(); + void DoRunL(); + void DoComplete(TInt& aError); + +private: + CMsvServerEntry& iEntry; // passed into constructor + CMsvEntrySelection* iCopyDirect; // created in constructor and reused as necessary + CMsvEntrySelection* iMoveDirect; // created in constructor and reused as necessary + CMsvEntrySelection* iMoveToLocalDirect; // created in constructor and reused as necessary + TMsvId iDestination; // store for copy/move destination + TMsvId iServiceId; + TInt iProgressMsgsToDo; + TInt iProgressMsgsDone; + TImap4GenericProgress::TImap4GenericProgressOp iRequestedOperation; + TImap4CompoundProgress iProgress; + }; + +#endif // __CIMAPOFFLINECONTROL_H__