diff -r 000000000000 -r 79c6a41cd166 idlefw/inc/framework/aipluginfactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/inc/framework/aipluginfactory.h Thu Dec 17 08:54:17 2009 +0200 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2005-2006 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: Content plugin manager class for Active idle framework. +* +*/ + + + +#ifndef C_AIPLUGINASYNCFACTORY_H +#define C_AIPLUGINASYNCFACTORY_H + +#include "aicontentpublisher.h" +#include "aipropertyextension.h" +#include "aifwdefs.h" +#include + +class MAiContentObserver; +class MAiEventHandlerExtension; +class MAiContentItemIterator; +class CAiContentPublisher; +class CAiUiController; +class CAiPluginActivityRegistry; +class CImplementationInformation; +class CAiContentPluginManager; +class MAiPluginTool; +class MAiPluginLifecycleObserver; + +/** + * @ingroup group_aifw + * + * Content plugin factory class for Active idle framework. + * + * @lib aifw + * @since S60 3.2 + */ +NONSHARABLE_CLASS( CAiPluginFactory ) : public CBase + { + public: + +// Constructor and destructor + + static CAiPluginFactory* NewL( RPointerArray& aPlugins, + CAiContentPluginManager& aManager ); + + virtual ~CAiPluginFactory(); + +// New functions + + /** + * Create plugin + * + * @since S60 5.0 + * @param aPublisherInfo plugin to load. + * @param aControllerArray array of active UI controllers. + */ + void CreatePluginL( const TAiPublisherInfo& aPublisherInfo, + RPointerArray& aControllerArray ); + + /** + * Destroy plugin + * + * @since S60 5.0 + * @param aPublisherInfo plugin to destroy. + * @param aControllerArray array of active UI controllers. + */ + void DestroyPluginL( const TAiPublisherInfo& aPublisherInfo, + RPointerArray& aControllerArray ); + + /** + * Destroys all plugins + * + * @since S60 5.0 + */ + void DestroyPlugins(); + + + void AddLifecycleObserverL( MAiPluginLifecycleObserver& aObserver ); + + /** + * Finds plugin by publisher info. + * + * @since S60 5.0 + * @param aInfo publisher info. + * @return Pointer to plugin, NULL if not found. + */ + CAiContentPublisher* PluginByInfoL( const TAiPublisherInfo& aInfo ) const; + + /** + * Finds plugin by name. + * + * @since S60 5.0 + * @param aInfo publisher info. + * @return Pointer to plugin, NULL if not found. + */ + CAiContentPublisher* PluginByNameL( const TDesC& aName ) const; + + private: + +// Constructors + + CAiPluginFactory( RPointerArray& aPlugins, + CAiContentPluginManager& aManager ); + + void ConstructL(); + +// New functions + + CAiContentPublisher* CreatePluginLC( const TAiPublisherInfo& aPluginInfo ); + + void SubscribeContentObserversL( CAiContentPublisher& aContentPublisher, + const TAiPublisherInfo& aPublisherInfo, + RPointerArray& aControllerArray ); + + void ConfigurePluginL( RPointerArray& aControllerArray, + CAiContentPublisher& aContentPublisher, + const TAiPublisherInfo& aPubInfo ); + + private: // Data + // Array of loaded data plugins, Not owned + RPointerArray& iPlugins; + // Content plugin manager, Not owned + CAiContentPluginManager& iManager; + // Ecom implementation info, Owned + RImplInfoPtrArray iEComPlugins; + // Plugin tool from utility lib, Owned + MAiPluginTool* iPluginTool; + // Life cycle observers, Owned + RPointerArray iLifecycleObservers; + }; + +#endif // C_AIPLUGINASYNCFACTORY_H + +// End of File.