--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imap4mtm/imapprotocolcontroller/inc/cimapcompoundbase.h Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,147 @@
+// 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:
+//
+
+#ifndef __CIMAPCOMPOUNDBASE_H__
+#define __CIMAPCOMPOUNDBASE_H__
+
+#include <mentact.h>
+#include <msvstd.h>
+#include <imapset.h>
+
+class CImapSession;
+class CImapSettings;
+class CImapSyncManager;
+class CMsvServerEntry;
+class TImap4CompoundProgress;
+
+// Operation step identifiers
+enum TCompoundStep
+ {
+ EFinished = 0,
+ ESelectSourceMailboxRW = 1,
+ ESelectSourceMailboxRO = 2,
+ ESelectDestinationMailboxRW = 3,
+ ESelectDestinationMailboxRO = 4,
+ EFetchMessage = 5,
+ ECopyMessage = 6,
+ EAppendMessage = 7,
+ EDeleteMessage = 8,
+ EDeleteLocalMessage = 9,
+ EDeleteAllMessages = 10,
+ ENewSyncFolder = 11,
+ ESyncFolder = 12,
+ EInboxDuplicateMove = 13,
+ EInboxDuplicateCopy = 14,
+ ECloseFolder = 15,
+ EDeleteFolder = 16,
+ ECreate = 17,
+ ERename = 18,
+ ECreateSession = 19,
+ EStartBackgroundSyncOp = 20,
+ ESelectInboxRW = 21,
+ EFetchMessageInitialise = 22,
+ ELocalCopyComplete = 23,
+ EExpunge = 24,
+ ESetSourceMailbox = 25,
+ ESyncTree = 26,
+ ESyncService = 27,
+ EDeleteLocalFolder = 28,
+ EDisconnect = 29,
+ ESetSource = 30,
+ EProcessRenameResponse = 31,
+ ECreateLocal = 32,
+ ESyncSubscriptions = 33,
+ EInboxDoneOps = 34,
+ EFolderDoneOps = 35,
+ EFolderCheckPendingOPs = 36,
+ EInboxCheckPendingOps = 37,
+ EInboxSync = 38,
+ EInboxEarlyDeletes = 39,
+ EFolderEarlyDeletes = 40,
+ EInboxEarlyExpunge = 41,
+ EFolderEarlyExpunge = 42,
+ EInboxLateDeletes = 43,
+ EFolderLateDeletes = 44,
+ EInboxLateExpunge = 45,
+ EFolderLateExpunge = 46,
+ EProcessFetchFlags = 47,
+ ESelectSyncFolder = 48,
+ ECheckDestinationMailbox = 49,
+ ESelectFolderAfterClose = 50,
+ ESuspendedForMigrate = 51,
+ ESyncInboxAutoFetch = 52,
+ ESyncFolderAutoFetchCheck = 53,
+ ESyncFolderAutoFetch = 54,
+ ECheckFolderExists = 55,
+ EProcessFolderCheck = 56,
+ EUpdateFlag = 57
+ };
+
+/**
+@internalTechnology
+@prototype
+*/
+class CImapCompoundBase : public CMsgActive
+ {
+
+public:
+ ~CImapCompoundBase();
+
+ virtual void StartOperation(TRequestStatus& aStatus, CImapSession& aSession) = 0;
+ virtual void Progress(TImap4CompoundProgress& aCompoundProgress) = 0;
+ virtual void StopForMigrate();
+ void CancelForMigrate();
+ virtual void ResumeOperationL(TRequestStatus& aStatus, CImapSession& aSession) = 0;
+ TBool Suspended();
+
+
+
+protected:
+ CImapCompoundBase(CImapSyncManager& aSyncManager, CMsvServerEntry& aServerEntry, CImapSettings& aImapSettings);
+ void DoRunL();
+ virtual TBool DoRunLoopL() = 0;
+ virtual void DoComplete(TInt& aErr);
+
+ TInt ProcessSessionError();
+ virtual TInt ProcessNegativeServerResponse() = 0;
+
+ // utility methods:
+ TInt CheckSelectionL(const CMsvEntrySelection& aSelection, CMsvEntrySelection* aLocalCopy, const TBool aMessages, const TBool aParts, const TBool aFolders, const TBool aIsInService);
+ TInt CalculateDownloadSizeL(const CMsvEntrySelection& aSelection);
+ TMsvId FindFolderL(const TMsvId aMessage);
+ void SetEntryL(const TMsvId aId);
+ void CompleteSelf();
+ void SetCurrentStep();
+ void MessageErrorL(const TMsvId aMessageId, const TInt aError);
+
+protected:
+ CImapSession* iSession; // not owned by this class
+ CImapSyncManager& iSyncManager;
+
+ CMsvServerEntry& iServerEntry;
+ CImapSettings& iImapSettings;
+
+ TCompoundStep iCurrentStep;
+ TCompoundStep iNextStep;
+
+ TInt iProgressErrorCode; // Is set when an error occur.
+ TBool iStopForMigrate; // set if stop for migrate requested
+ TBool iCancelForMigrate; // set if cancelling for migrate
+
+ TImap4GenericProgress::TImap4GenericProgressState iProgressState;
+ TImap4SyncProgress::TImap4SyncProgressState iSyncProgressState;
+ };
+
+#endif // __CIMAPCOMPOUNDBASE_H__