diff -r f742655b05bf -r d38647835c2e commsconfig/cscengine/inc/cscenguiextensionpluginhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsconfig/cscengine/inc/cscenguiextensionpluginhandler.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,258 @@ +/* +* Copyright (c) 2007-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: For CSC needed AIW handling for ui extension plug-ins +* +*/ + + + +#ifndef C_CSCENGUIEXTENSIONPLUGINHANDLER_H +#define C_CSCENGUIEXTENSIONPLUGINHANDLER_H + +#include + +const TUint KMaxUiExtensionNameLength = 128; + +class CEikonEnv; +class MAiwNotifyCallback; +class CAiwServiceHandler; +class CAiwGenericParamList; +class CCSCEngStartupHandler; +class MCSCEngUiExtensionObserver; + + +/** +* iUiExtensionName = UI Extension name +* iPluginsUid = Service plug-in UID +* iPlace = Place parameter +*/ +NONSHARABLE_CLASS( TUiExtensionPluginInfo ) + { + public: + + TUiExtensionPluginInfo() + : iUiExtensionName( KNullDesC ), + iPluginsUid( KNullUid ), + iPlace( 0 ) + {} + + public: + + /* + * UI Extension name + */ + TBuf iUiExtensionName; + + /* + * UI Extension plug-in UID + */ + TUid iPluginsUid; + + /* + * UI Extension placing information + * 0 = listbox + * 1 = options menu + */ + TInt iPlace; + }; + + + +/** + * An instance of CSCUiExtensionPluginHandler + * Handles Application Interworking (AIW). + * + * @lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( CCSCEngUiExtensionPluginHandler ) : public CBase, + public MAiwNotifyCallback + { + public: + + /** + * State of the plugin. + */ + enum TPluginState + { + EPluginInitialize = 1, + EPluginOpenExtensionView, + EPluginOpenExtensionViewFromAI + }; + + + // UI extension plug-in callback events. + enum TUiExtensionPluginResponse + { + EPluginInitialized = KAiwEventStarted, + EPluginExited = KAiwEventStopped, + EPluginError = KAiwEventError + }; + + /** + * Two-phased constructor. + */ + IMPORT_C static CCSCEngUiExtensionPluginHandler* NewL( + CEikonEnv& aEikEnv, + MCSCEngUiExtensionObserver& aObserver, + CCSCEngStartupHandler& aStartupHandler ); + + + /** + * Two-phased constructor. + */ + IMPORT_C static CCSCEngUiExtensionPluginHandler* NewLC( + CEikonEnv& aEikEnv, + MCSCEngUiExtensionObserver& aObserver, + CCSCEngStartupHandler& aStartupHandler ); + + + /** + * Destructor. + */ + virtual ~CCSCEngUiExtensionPluginHandler(); + + + /** + * Initializes CSC supported UI Extension plugins. + * + * @since S60 v3.2 + */ + IMPORT_C void InitializePluginsL(); + + + /** + * Launches UI Extension plugin view + * + * @since S60 v3.2 + * @param aPluginUid contains plugins Uid + * @param aViewUid contains view Uid to be returned + * @param aLaunchedFromAI ETrue if launched from active idle + */ + IMPORT_C void LaunchUiExtensionL( + const TUid& aPluginUid, const TUid& aViewUid, + TBool aLaunchedFromAI = EFalse ); + + + /** + * Returns item from UI Extension plug-in array + * + * @since S60 v3.2 + * @param aIndex array index + */ + IMPORT_C TUiExtensionPluginInfo ItemFromPluginInfoArray( TInt aIndex ); + + + /** + * Returns count of CSC supported ui extension plugins in array. + * + * @since S60 v3.2 + * @param aType for items to be returned + * @return count of profiles + */ + IMPORT_C TInt PluginCount() const; + + + // from base class MAiwNotifyCallBack + + /** + * From MAiwNotifyCallBack. + * Handles received callbacks from AIW plugin. + * + * @since S60 v3.0 + * @param aCmdId for cmd id + * @param aEventId for event id + * @param aEventParamList for event param list + * @param aInParamList for in param list + */ + TInt HandleNotifyL( TInt aCmdId, + TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& aInParamList ); + + + private: + + + CCSCEngUiExtensionPluginHandler( + CEikonEnv& aEikEnv, + MCSCEngUiExtensionObserver& aObserver, + CCSCEngStartupHandler& aStartupHandler ); + + + void ConstructL(); + + + /** + * Gets plug-in index in plug-in info array and plug-ins uid + * + * @since S60 v3.2 + * @param aInParamList for params received from plugin + * @param aIndex for plug-in info array index + * @param aPluginUid for plug-in uid + */ + void GetPluginIndexAndUid( + const CAiwGenericParamList& aInParamList, + TInt aIndex, + TUid aPluginUid ); + + /** + * Set information of plug-ins to plug-in info array + * + * @since S60 v3.2 + * @param aInParamList for params received from plugin + */ + void SetPluginInitInfo( + const CAiwGenericParamList& aInParamList ); + + + private: // data + + /** + * Reference to Eikon environment. + */ + CEikonEnv& iEikEnv; + + /** + * Observer for AIW commands + */ + MCSCEngUiExtensionObserver& iObserver; + + /** + * Reference to CCSCEngStartupHandler + */ + CCSCEngStartupHandler& iStartupHandler; + + /** + * For AIW Plugin services + * Own. + */ + CAiwServiceHandler* iServiceHandler; + + /** + * CSC supported UI Extension plug-in information array + */ + RArray iUiExtensionPluginInfoArray; + + /** + * Resource file offset. + */ + TInt iResourceOffset; + +#ifdef _DEBUG + friend class UT_CSCEngUiExtensionPluginHandler; +#endif + }; + +#endif // C_CSCENGUIEXTENSIONPLUGINHANDLER_H