diff -r 000000000000 -r 5e5d6b214f4f imstutils/imconversationview/imcvuiengine/inc/cimcvenginefactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imstutils/imconversationview/imcvuiengine/inc/cimcvenginefactory.h Tue Feb 02 10:12:18 2010 +0200 @@ -0,0 +1,285 @@ +/* +* Copyright (c) 2008-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: service engine factory class +* +*/ + + +#ifndef CIMCVENGINEFACTORY_H +#define CIMCVENGINEFACTORY_H + +// INCLUDES +#include +#include "mimcvenginefactory.h" +#include "mimcvengineopenchats.h" +#include +#include "mimcvenginemessagehandlerobserver.h" +#include "mimcvenginechatlistobserver.h" + +// FORWARD DECLARATIONS +class CIMCVEngine; +class MIMCVEngineConnectionHandler; +class MIMCVEngineOpenChatsObserver; +class CSPSettings; +class MIMCVEngineMessageCreator; +class CBSFactory; +class CSPNotifyChange; +class MIMCVEngineChatListObserver; +class CIMCVEngineStorageListener; + +// CLASS DECLARATION +/** + * Factory to create engine. + * This class implements the factory for creating engine + * + * @lib vimpstengine.lib + * @since S60 5.0 + */ + +class CIMCVEngineFactory : public CBase, + public MIMCVEngineFactory, + public MIMCVEngineOpenChatsObserver, + public MSPNotifyChangeObserver, + public MIMCVEngineMessageHandlerObserver, + public MIMCVEngineChatListObserver + { + public: // Two-phased constructors and destructor + + /** + * @returns a single instance of MVIMPSTEngineFactory + */ + IMPORT_C static MIMCVEngineFactory* InstanceL(); + + /** + * Release + * dont call delete + */ + IMPORT_C static void Release(); + + /** + * c++ default destructor + * dont call delete + */ + virtual ~CIMCVEngineFactory(); + + private: + + /** + * NewLC two phase constructor. + * dont call delete call close + */ + static CIMCVEngineFactory* NewLC(); + + /** + * Second phase construction + * ConstructL + */ + void ConstructL(); + + /** + * C++ constructor. + */ + CIMCVEngineFactory(); + + + void CreateServiceEngineL( TInt aServiceId ); + + + TBool CheckValidIMServiceL(CSPSettings& aSettings , TInt aServiceId) ; + + TUint32 ContactViewUidL(CSPSettings& aSettings, TUint32 aServiceId ); + + void ReadAndCreateAllValidServiceL(); + + + public: //From MVIMPSTEngineFactory + + /** + * return the engine instance for aServiceId. + */ + CIMCVEngine& GetServiceEngineL( TInt aServiceId ) ; + + /** + * find and release the engine instance for aServiceId. + */ + void ReleaseServiceEngine( TInt aServiceId ); + + /** + * @see MVIMPSTEngineFactory + */ + TPtrC GetDisplayNameL(TInt aIndex) const; + + + /** + * @see MVIMPSTEngineFactory + */ + const TDesC& GetTargetIdL(TInt aIndex) const; + + + /** + * @see MVIMPSTEngineFactory + */ + TInt Count() const; + + /** + * @see MVIMPSTEngineFactory + */ + void SetActiveItemL( const TInt aIndex ); + + /** + * @see MVIMPSTEngineFactory + */ + const TDesC& GetActiveItemL() const; + + /** + * @see MVIMPSTEngineFactory + */ + TBool IsMsgPendingL( const TInt aIndex ) const; + + /** + * @see MVIMPSTEngineFactory + */ + TInt FindIndexL(const TDesC& aItem); + + /** + * @see MVIMPSTEngineFactory + */ + void ResetL(); + + /** + * @see MVIMPSTEngineFactory + */ + void RegisterOpenChatObserver(MIMCVEngineOpenChatsObserver* aChatObserver); + + /** + * @see MVIMPSTEngineFactory + */ + void UnRegisterOpenChatObserver(); + + + TInt GetActiveServiceId(); + /* + * return all service engines array + */ + RPointerArray& GetServiceEngines(); + + /** + * @see MVIMPSTEngineFactory + */ + void RegisterServiceObserver(MIMCVEngineServiceChangeObserver* aServiceObserver) ; + /** + * @see MVIMPSTEngineFactory + */ + void UnRegisterServiceObserver() ; + + + private : + + /** + * @see handle the presence change notification + * to handle the connection lost + */ + void HandlePresenceChangedL(TInt aServiceId, const TDesC& aBuddyId ) ; + + /** + * Handle message send operation completion. + * @param aResult result to handle. + */ + void HandleOperationCompletdL(TInt aserviceId, MIMCVEngineMessage::TMessagerType aType , TInt aResult) ; + + /** + * @see HandleConnectionTerminatedL + * to handle the connection lost + * @param aReason, reason report + */ + void HandleConnectionEventL(TInt aServiceId, TIMCVConnectionState aState, TInt aReason ) ; + + /** + * Handle events. + * @param aEvent Event to handle. + * @param aContainerInfo, Container + */ + void HandleChatListEvent(TInt aServiceId, TChatListEventType aEvent, + MIMCVEngineMessageReadInterface* aContainerInfo + ) ; + + + private: // From MSPNotifyChangeObserver + + /** + * From MSPNotifyChangeObserver + * Callback when service has changed + * + * @since S60 5.0 + * @param aServiceId changed service + * @return None + */ + void HandleNotifyChange( TServiceId aServiceId ); + + /** + * From MSPNotifyChangeObserver + * Callback when service error occures + * + * @since S60 5.0 + * @param aError error code + * @return None + */ + void HandleError( TInt aError ); + + /* + * end the cv process + */ + void ShutDownConversationviewL(); + + private: + /** + * @see MIMCVEngineOpenChatsObserver + */ + void HandleChangeL(TInt aServiceId , TInt aIndex, TOpenChatsEventType aChangeType) ; + + /** + * @see MIMCVEngineOpenChatsObserver + */ + void SetStatusMsgL(TInt aServiceId, TInt aIndex,const TDesC & aMsg); + + private : + /* + * helper method to for service table change + */ + void DoHandleServiceChangeL( TInt aServiceId ); + + private : + // Owns : message creater + MIMCVEngineMessageCreator* iMessageCreator; + //owns array of services + RPointerArray iServiceEngines; + // not owns + MIMCVEngineOpenChatsObserver* iChatObserver; + // active service Id + TInt iActiveServiceId; + // active chat index + TInt iActiveChatIndex; + //owns brandingfactory for service specific icons + CBSFactory* iBrandingFactory; + // Own: service observer + CSPNotifyChange* iSpNotifyChange; + // not own + MIMCVEngineServiceChangeObserver* iServiceChangeObserver; + }; + +#endif //CIMCVENGINEFACTORY_H + +// End of File + +