diff -r 5b6f26637ad3 -r f4a778e096c2 contacts_plat/cca_view_plugin_api/inc/ccaextensionfactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contacts_plat/cca_view_plugin_api/inc/ccaextensionfactory.h Wed Sep 01 12:29:52 2010 +0100 @@ -0,0 +1,256 @@ +/* +* Copyright (c) 2009-2010 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: +* +*/ + +#ifndef CCAEXTENSIONFACTORY_H +#define CCAEXTENSIONFACTORY_H + +#include + +class MCCAViewLauncher; +class MCCAStatusProvider; + +/** + * ECom interface for CCA Extension factory. + * At the moment extension factory interface is used only for extend CCA + * Status button implementation: + * - CCA Status button implementation uses this interface to launch external + * views (MCCAViewLauncher) when user tap the Status button. + * - CCA Status button implementation uses MCCAStatusProvider interface to + * read status information from plug-in if status infromation doesn't found in + * Presence Cache. + * @lib n/a + * @since 9.2 + */ +class CCCAExtensionFactory : public CBase + { +public: // constructor and destructor + inline static CCCAExtensionFactory* NewL( + const TUid& aImplementationUid ); + + inline virtual ~CCCAExtensionFactory(); + + /** + * Creates a view launcher. + * Ownership is given. + * @return View Launcher instance @see MCCAViewLauncher + */ + virtual MCCAViewLauncher* CreateViewLauncherL() + { + return NULL; + } + + /** + * Returns Service ID of the plug-in. + */ + virtual const TDesC& ServiceID() const = 0; + + /** + * Extension point for the factory + */ + virtual TAny* FactoryExtension( + TUid /*aExtensionUid*/ ) + { + return NULL; + } + +private: // data + + // Own: ID key + TUid iDtor_ID_Key; + + }; + +// Use this UID to access CCCAExtensionFactory's status provider creator. +// Used as a parameter to CCCAExtensionFactory::FactoryExtension method. +const TUid KCCAExtensionFactoryStatusProviderCreatorUid = { 2 }; + +/** + * This class is an extension to CCCAExtensionFactory. + * + * @see CCCAExtensionFactory + * @see KCCAExtensionFactoryStatusProviderCreatorUid + */ +class MCCAExtensionFactoryStatusProviderCreator + { + protected: // Destructor + virtual ~MCCAExtensionFactoryStatusProviderCreator() { } + + public: + + /** + * Creates a status provider. + * Ownership is given. + * @return Status provider instance @see MCCAStatusProvider + */ + virtual MCCAStatusProvider* CreateStatusProviderL() = 0; + + }; + +/** + * View launcher extension for the CCA. + */ +class MCCAViewLauncher + { +public: + /// virtual destructor + virtual ~MCCAViewLauncher() {}; + + enum TCCAView + { + /// External view for MyCard + EMyCardView = 0x0, + /// External view for contact + ECCAView = 0x1 + }; + + /** + * Returns a true if view launcher supports current view. + */ + virtual TBool IsViewSupported( MCCAViewLauncher::TCCAView aView ) = 0; + + /** + * CCA and MyCard uses this function to launch external views. + * @param aView @see TCCAView + * @param aPackedContactLink packed link to the + * contact @see MVPbkContactLink + */ + virtual void LaunchViewL( MCCAViewLauncher::TCCAView aView, + const TDesC8* aPackedContactLink = NULL ) = 0; + + /** + * Extension point for the View Launcher + */ + virtual TAny* ViewLauncherExtension( + TUid /*aExtensionUid*/ ) + { + return NULL; + } + +protected: + MCCAViewLauncher() {}; + + }; + +class MCCAStatusProviderObserver; +class MVPbkContactLink; +class CGulIcon; + +/** + * Status provider extension for the CCA + */ +class MCCAStatusProvider + { +public: + /// virtual destructor + virtual ~MCCAStatusProvider() {}; + + /** + * Add observer + * @param aObserver instance @see MCCAStatusProviderObserver + */ + virtual void AddObserverL( + MCCAStatusProviderObserver& aObserver ) = 0; + + /** + * Removes observer + * @param aObserver instance @see MCCAStatusProviderObserver + */ + virtual void RemoveObserver( + MCCAStatusProviderObserver& aObserver ) = 0; + + /** + * CCA fetch status information for the Status button with this method + * if status information is not found from Presence Cache + * @param aLink + * @param aText Status Text, ownership is transfered + * @param aIcon Status Icon, ownership is transfered + */ + virtual void GetStatusInformationL( + const MVPbkContactLink& aLink, + HBufC*& aText, + CGulIcon*& aIcon ) = 0; + + /** + * CCA fetch status information for the Status button with this method + * if status information is not found from Presence Cache + * This function is used only for fetching My card status information + * @param aLink + * @param aText Status Text, ownership is transfered + * @param aIcon Status Icon, ownership is transfered + */ + virtual void GetMyCardStatusInformationL( + const MVPbkContactLink& aLink, + HBufC*& aText, + CGulIcon*& aIcon ) = 0; + + /** + * Extension point for the status provider + */ + virtual TAny* StatusProviderExtension( + TUid /*aExtensionUid*/ ) + { + return NULL; + } + +protected: + MCCAStatusProvider() {}; + + }; + +/** + * Interface to observe content changes + */ +class MCCAStatusProviderObserver + { +public: + /** + * Event types + */ + enum TCCAStatusProviderObserverEvent + { + /// Status is changed and CCA should fetch status information again + EStatusChanged = 0x0 + }; + + /** + * Plug-in can notify CCA about status events + * @param aEvent Type of the event + * @param aLink Contact which the event is about + */ + virtual void StatusEvent( + MCCAStatusProviderObserver::TCCAStatusProviderObserverEvent aEvent, + const MVPbkContactLink* aLink = NULL ) = 0; + + /** + * Extension point for the MCCAStatusProviderObserver + */ + virtual TAny* StatusProviderObserverExtension( + TUid /*aExtensionUid*/ ) + { + return NULL; + } + +protected: + MCCAStatusProviderObserver(){}; + virtual ~MCCAStatusProviderObserver() {}; + + }; + + +#include "ccaextensionfactory.inl" + +#endif // CCAEXTENSIONFACTORY_H