email/alwaysonlineemailplugin/inc/AlwaysOnlinePopAgent.h
changeset 0 72b543305e3a
--- /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 <mtclreg.h>//ClientMtmRegistry
+#include <popcmtm.h>//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