diff -r 000000000000 -r 8466d47a6819 ipsservices/ipssosaoplugin/inc/IpsSosAOBaseAgent.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipsservices/ipssosaoplugin/inc/IpsSosAOBaseAgent.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,238 @@ +/* +* Copyright (c) 2008 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: +* Base class for always online mail syncing and fetchin operations +* +*/ + + +#ifndef IPSSOSAOBASEAGENT_H_ +#define IPSSOSAOBASEAGENT_H_ + +#include +#include +#include + +#include "ipsplgcommon.h" + +class CIpsSetDataApi; +class CIpsSosAOImapSyncOp; +class CImImap4Settings; +class MIpsAOObserverNotifyInterface; +class TIpsPlgPropertyEvent; + +const TInt KIpsSosAOTextBufferSize = 200; + +/** +* class MIpsSosAOAgentOperationResponse; +* +* Interface for operation completion call backs +* +*/ +class MIpsSosAOAgentOperationResponse + { +public: + virtual void OperationCompletedL( TInt aError ) = 0; + }; + + +/** +* class CIpsSosAOBaseAgent +* +* Base class for always online mailbox syncing and fetching logic. +* Offer interface for ao mbox logic class to hide symbian spesific +* mail sync and fetch logic. +* Created by IpsSosAOMboxLogic only ones, is active when asyncronic operation +* is running. Instance of this class is mailbox spesific. +* +* @lib ipssosaoplugin.lib +*/ +class CIpsSosAOBaseAgent : public CActive + { + +public: // enums + + enum TAgentState + { + EStateConnectAndSync, + EStateConnectAndSyncOnHold, + EStateRefreshFolderArray, + EStatePopulateAll, + EStatePopulateOnHold, + EStateFetchOngoing, + EStateFetchOnHold, + EStateDisconnect, + EStateCompleted, + EStateSuspended, + EStateIdle }; + +public: + + /** + * Creates CIpsSosAOImapAgent or CIpsSosAOPopAgent according to type + * of service, return value is casted to CIpsSosAOBaseAgent type object + * @param aSession valid msv session reference + * @parem aOpResponse interface class to async operation response call backs + * @param aServiceId id of mailbox + * @return CIpsSisAOBaseAgent pointer + */ + static CIpsSosAOBaseAgent* CreateAgentL( + CMsvSession& aSession, + MIpsSosAOAgentOperationResponse& aOpResponse, + TMsvId aServiceId ); + + /* + * Destructor + */ + virtual ~CIpsSosAOBaseAgent(); + + /** + * Checks from mtm uid is this agent imap agent, + * mtm uid is set in constructor + * @return ETrue if uid is IMAP, EFalse in other case + */ + TBool IsTypeImap4() const; + + /** + * Gets FS plugin id related to protocol + * @return FS plugin id + */ + TInt GetFSPluginId() const; + + /** + * Signals mailbox sync to started via P&S (Publish & Subscribe) mechanism + * @param aMailbox id of the mailbox which sync is started + */ + void SignalSyncStarted( TInt aMailbox ); + + /** + * Signals mailbox sync to completed via P&S mechanism + * @param aMailbox id of the mailbox which sync is competed + * @param aError sync completion error code + */ + void SignalSyncCompleted( TInt aMailbox, TInt aError ); + + /** + * Gets incoming server address from (symbian side) mailbox settings + * NOTE: LoadSettingsL should be called before this in some point or + * parameter is unchanged + * @param aIncomingServer modifiable buffer where address is written + */ + virtual void GetServerAddress( + TBuf& aIncomingServer ) const = 0; + + /** + * Gets mail account username from (symbian side) mailbox settings + * NOTE: LoadSettingsL should be called before this in some point or + * parameter is unchanged + * @param aUsername modifiable buffer where username is written + */ + virtual void GetUsername( + TBuf8& aUsername ) const = 0; + + /** + * Gets mailbox connection status + * @return ETrue if mailbox is connected + */ + virtual TBool IsConnected() const = 0; + + /** + * Starts mailbox sync asynchronically, sync completion is informed via + * MIpsSosAOAgentOperationResponse interface + */ + virtual void StartSyncL() = 0; + + /** + * Starts message fetch asynchronically, fetch completion is informed via + * MIpsSosAOAgentOperationResponse interface + * NOTE: this is not used in FS EMail 2.0, this is for later usege, mainly + * for case if AO have to support IMAP-IDLE + * @param aFetchMsgArray array of message ids to be fethced + */ + virtual void StartFetchMessagesL( const RArray& aFetchMsgArray ) = 0; + + /** + * Cancel all ongoing operations and disconnects the service if it's connected + */ + virtual void CancelAllAndDisconnectL() = 0; + + /** + * Cancel all ongoing operations but not disconnect service, is used when + * another operation should started for ex. user starts message fetching from ui + * during always online sync + */ + virtual void CancelAllAndDoNotDisconnect() = 0; + + /** + * Sets agent not to disconnect after operation is completed. + */ + virtual void DoNotDisconnect() = 0; + + /* + * Clears not to disconnect flag + */ + virtual void ClearDoNotDisconnect() = 0; + + /* + * Cancels ongoing operation and puts agent on hold state + */ + virtual void HoldOperations() = 0; + + /* + * Continues operation that was cancelled when holded operations, + * Does nothing if there's agent is not on hold state + */ + virtual void ContinueHoldOperations() = 0; + + /* + * Gets current agent state + */ + virtual TAgentState GetState() const = 0; + + /* + * Loads settings + */ + virtual void LoadSettingsL() = 0; + +protected: + + /* + * Constructor + */ + CIpsSosAOBaseAgent(); + + /* + * Clears flag that informs is some event signaled via P&S by this agent instance + */ + void ClearSignaledFlags(); + +private: + + /* + * Sets new P&S property + */ + void SetPropertyEvent( + TInt aEvent, + TInt aMailbox, + TInt aError ); + +private: + + TBool iSyncStartedSignaled; + TUid iMtmType; + TPckgBuf iPropertyBuf; + + }; + +#endif /*IPSSOSAOBASEAGENT_H_*/