diff -r 000000000000 -r 72b543305e3a email/alwaysonlineemailplugin/inc/AlwaysOnlinePopAgent.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/alwaysonlineemailplugin/inc/AlwaysOnlinePopAgent.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,198 @@ +/* +* Copyright (c) 2002 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: +* Pop agent implementation +* +*/ + +#ifndef __ALWAYSONLINEPOPAGENT_H__ +#define __ALWAYSONLINEPOPAGENT_H__ + +#include "AlwaysOnlineEmailAgentBase.h" + +#include //ClientMtmRegistry +#include //popclientmtm +/** +* CAlwaysOnlinePopAgent +* +* Class takes care of POP mailbox "always" online logic +*/ +class CAlwaysOnlinePop3Agent : public CAlwaysOnlineEmailAgentBase + { + + public: + + + /** + * NewL + * Two phased constructor + * @param CMsvSession&, session reference + * @param CClientMtmRegistry&, mtm registry reference + * @param TMsvId, mailbox id + * @param MAlwaysOnlineStatusQueryInterface&, status query interface + * @param CAlwaysOnlineEmailAgent&, email agent reference + * @return CAlwaysOnlinePop3Agent*, self pointer + */ + static CAlwaysOnlinePop3Agent* NewL( CMsvSession& aSession, + CClientMtmRegistry& aClientMtmRegistry, + TMsvId aMailboxId, + MAlwaysOnlineStatusQueryInterface& aAlwaysOnlineManager, + CAlwaysOnlineEmailAgent& aEmailAgent); + + /** + * ~CAlwaysOnlinePop3Agent + * Destructor + */ + ~CAlwaysOnlinePop3Agent(); + + private: + /** + * CAlwaysOnlinePop3Agent + * @param CMsvSession&, session reference + * @param CClientMtmRegistry&, mtm registry reference + * @param TMsvId, mailbox id + * @param MAlwaysOnlineStatusQueryInterface&, status query interface + * @param CAlwaysOnlineEmailAgent&, email agent reference + */ + CAlwaysOnlinePop3Agent( CMsvSession& aSession, + CClientMtmRegistry& aClientMtmRegistry, + MAlwaysOnlineStatusQueryInterface& aAlwaysOnlineManager, + CAlwaysOnlineEmailAgent& aEmailAgent ); + + /** + * ConstructL + * @param TMsvId, mailbox id + * Second phase constructor + */ + void ConstructL( TMsvId aMailboxId ); + + //from CAlwaysOnlineEmailAgentBase + public: + + /** + * StartL + * from CAlwaysOnlineEmailAgentBase + */ + void StartL(); + + /** + * ConnectAndUpdateHeadersL + * from CAlwaysOnlineEmailAgentBase + */ + void ConnectAndUpdateHeadersL( ); + + + /** + * DisconnectL + * from CAlwaysOnlineEmailAgentBase + * @param TBool, automatic or manual disconnection + */ + void DisconnectL( TBool aAutomatic ); + + + protected: + + /** + * ChangeNextStateL + * from CAlwaysOnlineEmailAgentBase + */ + void ChangeNextStateL(); + + /** + * HandleOpErrorL + * from CAlwaysOnlineEmailAgentBase + */ + void HandleOpErrorL(); + + /** + * DoSyncDisconnectL(), from emailagentbase + * Does sync disconnect. Meant to be called from ResetAll(). + * This is needed because this must not have imapact on state machine. + */ + void DoSyncDisconnectL(); + + /** + * HandleOpCompleted + * from CAlwaysOnlineEmailAgentBase + * @param TMsvOp, id of completed operation + * @param, TInt, completion code + */ + void HandleOpCompleted( TMsvOp opId, TInt aCompletionCode ); + + /** + * CreateCompletedOpL + * from CAlwaysOnlineEmailAgentBase + */ + void CreateCompletedOpL(); + + /** + * MailHasBeenSyncedL + * Function to check has mailbox been synced before. + * This is used to determine which sync method we should use. + * @return TBool, has mailbox been synced + */ + TBool MailHasBeenSyncedL(); + + /** + * + * + * @since S60 v3.2 + * @return + * @leave KErrNoMemory + */ + TImPop3PopulateOptions FillMailOptionsL(); + + + private: + + /** + * StartWaitTimerL + * starts interval waiter. Does not handle schedule waits, only polling interval + */ + void StartWaitTimerL(); + + /** + * CreatePop3OperationL + * aFunctionId ignored and completed operation is created if aCompletedOperation is true. + * @param TMsvOp&, this operation id is set in this function + * @param TInt, function Id + * @param TBool, ETrue if we want completed operation instead of real one + */ + void CreatePop3OperationL( + TMsvOp& aOpId, TInt aFunctionId, TBool aCompletedOperation = EFalse ); + + /** + * aFunctionId ignored and completed operation is created if aCompletedOperation is true. + * @param TInt, function Id + * @param TBool, ETrue if we want completed operation instead of real one + */ + void CreatePop3OperationL( + TInt aFunctionId, TBool aCompletedOperation = EFalse ); + + /** + * + * + */ + void DoFilteredPopulateL(); + + //data + private: + CPop3ClientMtm* iPop3ClientMtm; + TBool iHasBeenSynced; + + }; + + +#endif +//EOF