diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/popservermtm/inc/POPSMTM.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/popservermtm/inc/POPSMTM.H Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,264 @@ +// 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: +// popservermtm module header +// +// + +/** + @file + @internalComponent + @released +*/ + +#if !defined(__POPSMTM_H__) +#define __POPSMTM_H__ + +#include + +#include +#include +#include + +#include +#include +#include "mimmobileserver.h" +#include + +// Forward declarations +class CImPop3RefreshMailBox; +class CImPop3CopyMove; +class CImPop3Delete; +class CImPop3TopPopulate; +class CPopSessionManager; +class CImMobilityManager; + +#if (defined SYMBIAN_USER_PROMPT_SERVICE) +class CPopUpsResponseWaiter; +#endif + +// +// CImppServerMtm +// +// +// POP3 server MTM +// package buffer for progress info. +typedef TPckgBuf TPop3ProgressBuf; + +_LIT(KImPopsMTMResourcePath,"c:\\system\\data\\imcv.r01"); + +// +// Forward declarations +class CImPop3Settings; +class CImOffLineOperation; +class CImPop3OfflineOperationFinder; +class CImPop3SetOfflineOps; +class CImLogMessage; +// +// + +// +// CImppServerMtm +// +class CImppServerMtm : public CBaseServerMtm, public MImMobileServer +{ +public: + enum TPopOpStopType + { + EPopStopOpBearerLost, + EPopStopOpImmediate, + EPopStopOpNormal + }; + + IMPORT_C static CImppServerMtm* NewL(CRegisteredMtmDll& aPopServerMtmDll, + CMsvServerEntry* aEntry); + // mobility API from MImMobileServer + void PrepareForNewCarrier(TImMobilityAction aAction, TBool aIsSeamless); + void CarrierLost(); + void NewCarrierActive(TAccessPointInfo aNewAp, TBool aIsSeamless); + void MobilityError(TUint aError); + virtual const TDesC8& MobilityProgress(); + + ~CImppServerMtm(); + // + void CopyFromLocalL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aStatus); + void CopyToLocalL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aStatus); + void CopyWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus); + void DeleteAllL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus); + void CreateL(TMsvEntry aNewEntry, TRequestStatus& aStatus); + void ChangeL(TMsvEntry aNewEntry, TRequestStatus& aStatus); + // + void StartCommandL(CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus); + // + const TDesC8& Progress(); + + TBool CommandExpected(); + // + void MoveToLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus); + void MoveFromLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus); + void MoveWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus); + +protected: + TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1); + +private: + enum TImppCopyMethod + { + EImppCopy, + EImppMove, + EImppPopulate + }; + + CImppServerMtm(CRegisteredMtmDll& aPopServerMtmDll, CMsvServerEntry* aEntry); + void ConstructL(); + + void DoCancel(); + void DoRunL(); + void DoComplete(TInt aError); + + void DoCancelCurrentOp(); + + void CheckMailboxStateL(); + void DoConnectL(TRequestStatus& aStatus, CMsvEntrySelection& aSelection); + void DoRefreshL(); + void DoCopyMoveL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aStatus, TImppCopyMethod aCopyMethod); + void DoQuitL(TRequestStatus& aStatus); + void DoTopPopulateL(const CMsvEntrySelection& aSelection, TInt aLimit, TRequestStatus& aStatus); + + void GetPopDetailsL(const CMsvEntrySelection& aSel); + void QueueRemoteCleanup(); // tidy up if anything goes wrong with refresh + + void ResetProgress(); + + // Called from DoRun() sets TMsvEntry visible flag for each POP3 child. + void DoShowMessagesL( TBool aHide); + void CommandComplete( TInt aErrorCode ); + CMsvEntrySelection* StripInvalidEntriesLC(const CMsvEntrySelection& aSelection,TBool aExcludePartial=EFalse) const; + void FindFirstOfflineOperationL(TBool aQuitting); + inline void RunOfflineOperationL(); + inline TBool AcceptingOfflineOperationsL(const CMsvEntrySelection& aSelection); + void AddOfflineOperationL(const CMsvEntrySelection& aSelection, TMsvId aDestination, CImOffLineOperation::TOffLineOpType aOperationType, TRequestStatus& aStatus); + void CancelOfflineOperationsL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus); + + TBool PruneMessages(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus); + void GetSystemProgress(TMsvSystemProgress& aSysProg); + void GetProgress(); + + TBool StartBearerMobilityL(TInt aError); + void CancelToMigrate(); + void CompleteCurrentOpForMigration(); + void StopCurrentOpForMigration(); + TBool DoMigrationRunL(); + void DisconnectForMigrate(); + void RestartAfterMigrateL(); + void StoreConfigurationToMigrateL(); + TInt GetNonOperationMtmData(TNonOperationMtmDataType aMtmDataType, TPtrC8& aMtmDataBuffer); + +private: + + enum TPopsMtmState + { + EPopConnecting, + EPopRefreshing, + EPopCopying, + EPopMoving, + EPopDeleting, + EPopQuitting, + EPopTidying, + EPopConnectedAndIdle, + EPopDisconnected, + EPopPopulating, + EPopAddingOfflineOp, + EPopFindingFirstOfflineOp, + EPopCancellingOfflineOps, + EPopTopPopulating, + EPopAuthoriseAndConnect + }; + + enum TPopMigrateState + { + ENotMigrating, + EWaitingForOpToStop, + EWaitingForOpToComplete, + EDisconnectingForMigrate, + EWaitingForNewCarrier, + EWaitingCarrierRejected, + EConnectingAfterMigrate + }; + + struct TImPop3Status + { + TBool iQuitting; + TBool iRunningOfflineOperations; + TPopsMtmState iCurrentOperation; + TPopsMtmState iLastCurrentOperation; + }; + + struct TPopSavedValuesForMigration + { + TInt32* iMessageArray; + TInt iNumMessages; + TBool iValuesSaved; + }; + + TImPop3Status iState; + TPopMigrateState iMigrationState; + TBool iCancelForBMMigration; + TPopSavedValuesForMigration iSavedValuesForMigration; + + CImPop3Session* iPopSession; + CImPop3RefreshMailBox* iPopRefreshMailbox; + CImPop3CopyMove* iPopCopyMove; + CImPop3Delete* iPopDelete; + CImPop3TopPopulate* iPopTopPop; + + CArrayFixFlat* iMsvIdArray; // stores any failed refresh msgs + TInt iArrayCtr; + TRequestStatus* iReportStatus; + // Pop3 settings + CImPop3Settings* iPopSettings; + CImIAPPreferences* iIAPPreferences; + + TPop3Progress iPopProgress; + TPop3ProgressBuf iPopProgressBuf; + + TBool iConnectedToPopMbox; + TBool iOperationActive; + + TMsvId iServiceId; + TUint iPort; + TInt iDoCallShowMessages; + + TInt iCurrentOfflineOp; + CImPop3OfflineOperationFinder* iOfflineOpFinder; + CImPop3SetOfflineOps* iOfflineOpSetter; + CImLogMessage* iLogMessage; + + CMsvEntrySelection* iMessagesToKeep; + TBool iNotConnectToPopMailBox ; +#if (defined SYMBIAN_USER_PROMPT_SERVICE) + /** For interaction with UPS server */ + TThreadId iClientThreadId; + TBool iHasCapability; + CPopUpsResponseWaiter* iWaiter; +#endif + + CImMobilityManager* iMobilityManager; + + CPopSessionManager* iSessionManager; + + TNonOperationMtmDataAccessPointIdBuffer iMtmDataAccessPointIdBuffer; + + }; + +#endif