diff -r 000000000000 -r ff3b6d0fd310 convergedcallengine/cce/inc/cccepluginmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedcallengine/cce/inc/cccepluginmanager.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,310 @@ +/* +* Copyright (c) 2006-2007 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: Handles threads / plugins +* +*/ + + +#ifndef CCCEPLUGINMANAGER_H +#define CCCEPLUGINMANAGER_H + +#include +#include // P&S support + +#include "mccpplugindeathobserver.h" // MCCPPluginDeathObserver +#include "mccespsobserver.h" // MCCESPSObserver + +class CConvergedCallProvider; +class MCCPObserver; +class CCCEPlugin; +class CCCECallContainer; +class MCCEObserver; +class MCCPCallObserver; +class MCCPEmergencyCall; +class MCCPDTMFProvider; +class MCCPDTMFObserver; +class CCCETransferController; +class CCCESPSettingsHandler; + +/** + * CCE Plugin manager + * + * Creates/Deletes and update current plugins. + * + * @lib cce.dll + * @since S60 v3.2 + */ +NONSHARABLE_CLASS(CCCEPluginManager): public CActive, + public MCCPPluginDeathObserver, + public MCCESPSObserver + { +public: + + /** + * Two-phased constructor. + * @param aCallContainer Reference to call container + * @param aTransferController Reference to transfer controller + */ + static CCCEPluginManager* NewL( + CCCECallContainer& aCallContainer, + CCCETransferController& aTransferController ); + + /** + * Destructor. + */ + virtual ~CCCEPluginManager(); + +public: + + /** + * Sets observer + * + * @since S60 v3.2 + * @param aProviders + */ + void SetObserver( const MCCEObserver& aObserver ); + + /** + * TODO + * + * @since S60 v3.2 + * @param aProviders + */ + void SetEmergencyCallObserver(MCCPCallObserver& aEmergencyCallObserver); + + /** + * Returns pointer to primary emergencycall + * + * @since S60 v3.2 + * @return Pointer to emergency call. + */ + MCCPEmergencyCall* PrimaryEmergencyCall(); + + /** + * Returns Uid of primary emergencycall + * + * @since S60 v3.2 + * @return Implementation Uid. + */ + TUid PrimaryEmergencyCallUid() const; + + /** + * Returns plugins with emergency call attribute. + * + * @since S60 v3.2 + * @return Array of emergency call capable plugins. + */ + RArray& AlternativeEmergencyPlugins(); + + /** + * Returns plugin with desired service id + * + * @since S60 v3.2 + * @param aServiceId Used for searching + * @return Pointer to plugin. NULL if not found. + */ + CConvergedCallProvider* GetPluginL( TUint32 aServiceId ); + + /** + * Returns plugin with desired implementation id + * + * @since S60 v3.2 + * @param aType Used for searching + * @return Pointer to plugin. NULL if not found. + */ + CConvergedCallProvider* GetPluginL( const TUid& aType ); + + /** + * Remove unneeded plugin with desired implementation id + * + * @since S60 v3.2 + * @param aType Used for searching + */ + void RemovePlugin( const TUid& aType ); + + /** + * Returns ETrue if plugin can be relesed if idle + * + * @since S60 v3.2 + * @return TBool EFalse If plugin is permanently in memory + */ + TBool ReleaseWhenIdle( const TUid aType ); + + /** + * Returns dtmf interface for desired provider + * + * @since S60 v3.2 + * @param aObserver Used for setting interface observer + * @param aImplementationUid Used for searching + * @return Reference to dtmf provider or leave. + */ + MCCPDTMFProvider& DtmfProviderL( + const MCCPDTMFObserver& aObserver, + TUid aImplementationUid ) const; + +private: + +// from base class MCCESPSObserver + /** @see MCCESPSObserver */ + void ServiceEnabledL( TUid aImplementationUid ); + + /** @see MCCESPSObserver */ + void ServiceDisabledL( TUid aImplementationUid ); + +// from base class MCCPPluginDeathObserver + + /** @see MCCPPluginDeathObserver::CCPPluginDiedEvent */ + void CCPPluginDiedEvent(TUid aPluginId, TInt aDeathType, TInt aReason); + + /** @see MCCPPluginDeathObserver::CCPPluginInitialisationFailed */ + void CCPPluginInitialisationFailed(TUid aPluginUid, TInt aError); + +// from base class CActive + + /** + * This will be runned when incoming call monitor activates + * + * @since S60 v3.2 + */ + void RunL(); + + /** + * Cancels incoming call monitor + * + * @since S60 v3.2 + */ + void DoCancel(); + +private: + + /** + * This is called after phone application is constructed + * or else causes phone not to boot. + * + * @since S60 v3.2 + * @param aPluginManager + * @return KErrNone if successful + * ( KErrNone always or else there is loop possiple ). + */ + static TInt DoAfterBoot( TAny* aPluginManager ); + + /** + * This is called when plugins are cheduled to be removed + * + * @since S60 v3.2 + * @param aPluginManager + * @return KErrNone if successful + * ( KErrNone always or else there is posiibility to loop + */ + static TInt RemovePlugins( TAny* aPluginManager ); + + + /** + * Logic for loading plugins at boot. + * + * @since S60 v3.2 + */ + void LoadBootPluginsL(); + + /** + * Logic for loading single plugin at boot + * + * @since S60 v3.2 + * @param aServiceId Service id for loadable plugin + */ + void LoadBootPluginL( TInt aServiceId ); + + /** + * Append to emergency call array if not already there. + * + * @since S60 v3.2 + */ + void AddToAlternativeEmergencyArray(TUid aUid); + +private: + + /** Constructor */ + CCCEPluginManager( + CCCECallContainer& aCallContainer, + CCCETransferController& aTransferController ); + + /** Leaving stuff in constructor */ + void ConstructL(); + +private: + + /** + * Reference to call container + */ + CCCECallContainer& iCallContainer; + + /** + * Reference to transfer controller + */ + CCCETransferController& iTransferController; + + /** + * This calls DoAfterBoot method + * Own + */ + CIdle* iIdle; + + /** + * Array of plugins + * Own + */ + RPointerArray iPluginArray; + + /** + * Array of plugins + * Own + */ + RPointerArray iPluginsToClose; + + /** + * Observer + * Own + */ + const MCCEObserver* iObserver; + + /** + * TODO + * Own? + */ + MCCPCallObserver* iEmergencyCallObserver; + + /** + * TODO + * Own? + */ + CCCEPlugin* iPrimaryEmergencyCallPlugin; + + /** + * Used in incoming call monitor + */ + RProperty iProperty; + + /** + * Array of plugins with emergency call attribute + */ + RArray iAlternativeEmergencyPlugins; + + /** + * SPSettings listener + * Own + */ + CCCESPSettingsHandler* iSPSettings; + }; + +#endif // CCCEPLUGINMANAGER_H