diff -r 7aa6007702af -r 61b27eec6533 languageinterworkingfw/servicehandler/inc/liwservicehandlerimpl.h --- a/languageinterworkingfw/servicehandler/inc/liwservicehandlerimpl.h Fri Apr 16 15:54:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,435 +0,0 @@ -/* -* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: Implementation class for CLiwServiceHandler. -* See also LiwServiceHandler.h. -* -*/ - - - - - - - -#ifndef LIW_SERVICE_HANDLER_IMPL_H -#define LIW_SERVICE_HANDLER_IMPL_H - -// INCLUDES -#include -#include -#include -#include "liwtlsdata.h" -#include -#include - -// CONSTANTS - -// MACROS - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS -class CLiwMenuBinding; -class CLiwMenuPane; -class CLiwServiceIfMenu; -class CLiwServiceIfBase; -class CLiwEcomMonitor; -class CRTSecMgrScriptSession; - -// CLASS DECLARATION - -/** -* Internal implementation class for CLiwServiceHandler. -* -* Contains the actual implementation logic for Service Handler, whereas the -* CLiwServiceHandler class provides only the public API. -* -* @see CLiwServiceHandler for API documentation. -* @since Series 60 2.6 -*/ -NONSHARABLE_CLASS(CLiwServiceHandlerImpl) : - public CBase, - public MLiwNotifyCallback, - public MEikMenuObserver, - public MLiwMenuLaunchObserver - { - public: // Construction & destruction - /** - * Constructs CLiwServiceHandlerImpl instance. - * - * @return Pointer to the new instance. - */ - static CLiwServiceHandlerImpl* NewL(); - - /** - * Destructor. - */ - virtual ~CLiwServiceHandlerImpl(); - - public: // Management - /** - * @see CLiwServiceHandler::Reset() - */ - void Reset(); - - /** - * @see CLiwServiceHandler::NbrOfProviders() - */ - TInt NbrOfProviders(const CLiwCriteriaItem* aCriteria); - - - - public: // Interest handling - /** - * @see CLiwServiceHandler::AttachL() - */ - void AttachL(TInt aInterestResourceId); - - /** - * @see CLiwServiceHandler::AttachL() - */ - TInt AttachL(const RCriteriaArray& aInterest); - - TInt AttachL(const RCriteriaArray& aInterest,CRTSecMgrScriptSession* aSecMgrScriptSession); - /** - * @see CLiwServiceHandler::QueryImplementationL() - */ - void QueryImplementationL(CLiwCriteriaItem* aItem, RCriteriaArray& aProviderList); - void GetCapabilitiesL(RArray& secMgrCapList,CLiwGenericParamList* pMetaData); - /** - * @see CLiwServiceHandler::GetProviderResourceFile() - */ - void GetProviderResourceFile(TDes& aFilePath, CLiwGenericParamList* pMetaData); - - /** - * @see CLiwServiceHandler::GetInterest() - */ - void GetInterest(RCriteriaArray& aInterest); - - /** - * @see CLiwServiceHandler::DetachL() - */ - void DetachL(const RCriteriaArray& aInterest); - - /** - * @see CLiwServiceHandler::DetachL() - */ - void DetachL(TInt aInterestResourceId); - - /** - * @see CLiwServiceHandler::GetCriteria() - */ - const CLiwCriteriaItem* GetCriteria(TInt aId); - - /** - * @see CLiwServiceHandler::InParamListL() - */ - CLiwGenericParamList& InParamListL(); - - /** - * @see CLiwServiceHandler::OutParamListL() - */ - CLiwGenericParamList& OutParamListL(); - - public: // Menu handling - /** - * @see CLiwServiceHandler::InitializeMenuPaneL() - */ - void InitializeMenuPaneL( - CEikMenuPane& aMenuPane, - TInt aMenuResourceId, - TInt aBaseMenuCmdId, - const CLiwGenericParamList& aInParamList); - /** - * @see CLiwServiceHandler::InitializeMenuPaneL() - */ - void InitializeMenuPaneL( - CEikMenuPane& aMenuPane, - TInt aMenuResourceId, - TInt aBaseMenuCmdId, - const CLiwGenericParamList& aInParamList, - TBool aUseSubmenuTextsIfAvailable); - - /** - * @see CLiwServiceHandler::ServiceCmdByMenuCmd() - */ - TInt ServiceCmdByMenuCmd(TInt aMenuCmdId) const; - - /** - * @see CLiwServiceHandler::ExecuteMenuCmdL() - */ - void ExecuteMenuCmdL( - TInt aMenuCmdId, - const CLiwGenericParamList& aInParamList, - CLiwGenericParamList& aOutParamList, - TUint aCmdOptions = 0, - MLiwNotifyCallback* aCallback= NULL); - - /** - * @see CLiwServiceHandler::AttachMenuL() - */ - void AttachMenuL(TInt aMenuResourceId, TInt aInterestResourceId); - - /** - * @see CLiwServiceHandler::AttachMenuL() - */ - void AttachMenuL(TInt aMenuResourceId, TResourceReader& aReader); - - /** - * @see CLiwServiceHandler::AttachMenuL() - */ - void AttachMenuL(TInt aMenuResourceId, const RCriteriaArray& aInterest); - - /** - * Attach menu related criteria items to given menu. - * - * @param aMenuEntries List of menu command ids. - * @param aMenuResourceId Menu to be attached. - * @param aInterest Interest list. - */ - void AttachMenuL(RArray& aMenuEntries, TInt aMenuResourceId, RCriteriaArray& aInterest); - - /** - * Attach menu related criteria items to given menu. - * - * @param aMenuResourceId Resource reader pointing - * to menu to be attached. - */ - - //void AttachMenuL(TResourceReader& aReader, TInt aMenuId, RCriteriaArray& aInterest); - - /** - * @see CLiwServiceHandler::DetachMenu() - */ - void DetachMenu(TInt aMenuResourceId, TInt aInterestResourceId); - - /** - * @see CLiwServiceHandler::IsSubMenuEmpty() - */ - TBool IsSubMenuEmpty(TInt aSubMenuId); - - /** - * @see CLiwServiceHandler::IsLiwMenu() - */ - TBool IsLiwMenu(TInt aMenuResourceId); - - /** - * @see CLiwServiceHandler::HandleSubmenuL() - */ - TBool HandleSubmenuL(CEikMenuPane& aPane); - - public: // Generic service command handling - /** - * @see CLiwServiceHandler::ExecuteServiceCmdL() - */ - void ExecuteServiceCmdL( - const TInt& aCmdId, - const CLiwGenericParamList& aInParamList, - CLiwGenericParamList& aOutParamList, - TUint aCmdOptions = 0, - MLiwNotifyCallback* aCallback = 0); - - /** - * @see CLiwServiceHandler::ExecuteServiceCmdL() - */ - void ExecuteServiceCmdL( - const CLiwCriteriaItem& aCmd, - const CLiwGenericParamList& aInParamList, - CLiwGenericParamList& aOutParamList, - TUint aCmdOptions = 0, - MLiwNotifyCallback* aCallback = 0); - - /** - * @see CLiwServiceHandler::MenuCmdId() - */ - TInt MenuCmdId(TInt aMenuCmdId) const; - - public: // Other new methods - /** - * Called by CLiwEcomMonitor. - * - * @param aImpl An object representing this class. - * @return An error code. KErrNone if successful. - */ - static TInt SynchronizeCallBack(TAny* aImpl); - - public: // From MLiwNotifyCallback - TInt HandleNotifyL( - TInt aCmdId, - TInt aEventId, - CLiwGenericParamList& aEventParamList, - const CLiwGenericParamList& aInParamList); - - public: // From MEikMenuObserver - void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); - - public: // From MEikCommandObserver (via MEikMenuObserver) - void ProcessCommandL(TInt aCommandId); - - void GetProviderCapability(CLiwCriteriaItem* aItem,RCriteriaArray& aOutItem); - - private: // From MLiwMenuLaunchObserver - void MenuLaunched(); - - private: - // Possible placeholder types. - enum TLiwPlaceholderType - { - ELiwPlaceholderNormal, - ELiwPlaceholderCascade, - ELiwPlaceholderIntelligentCascade - }; - - private: - CLiwServiceHandlerImpl(); - void ConstructL(); - - // Attach menu related criteria items to given menu. - void DoAttachMenuL(TResourceReader& aReader, TInt aMenuId, RCriteriaArray& aInterest); - - TInt DoAttachL(const RCriteriaArray& aInterest,CRTSecMgrScriptSession* aScriptSession); - void DoAttachL(const RCriteriaArray& aInterest); - - void ReadInterestListL(TResourceReader& aReader, RPointerArray& aResult); - TInt ResolveProvidersL(CLiwBinding* aBinding, CLiwCriteriaItem* aItem, CRTSecMgrScriptSession* aScriptSession); - TInt ResolveProvidersL(CLiwBinding* aBinding, CLiwCriteriaItem* aItem); - - TBool IsCached(CLiwServiceIfBase* aProvider); - - CLiwMenuPane* CreateEmptyLiwMenuPaneL(TInt aBaseMenuCmdId, TInt aResourceId); - void DeleteLiwMenuPane(CLiwMenuPane* aLiwPane); - - TInt ResourceIdForNextFreeSlot(); - void CopyMenuItemsL(CLiwMenuPane* aSource, CEikMenuPane& aDest, TInt aStartIndex, - TBool aIsSubmenu); - TInt SlotItemCmd(CEikMenuPane& aPane); - CLiwMenuPane* MenuPaneForSlotCmd(TInt aCmdId); - TLiwPlaceholderType PlaceholderType(CEikMenuPane& aPane, TInt aCmd, TBool& aTitleLocked); - void ConvertPlaceholderL(CEikMenuPane& aPane, TInt aCmd, CLiwMenuPane& aLiwPane, - const TDesC& aTitle); - void UnCascadeL(CEikMenuPane& aPane, TInt aCmd, CLiwMenuPane& aLiwPane); - void SkipMenuFields(TResourceReader& aReader); - TBool IsInLastInitialized(CLiwMenuPane* liwPane) const; - TBool GetSubmenuTitle(CEikMenuPane& aPane, TDes& aResult); - TBool IsCriteriaAlreadyInInterest(CLiwCriteriaItem& aItem, - RPointerArray& aInterest) const; - CLiwCriteriaItem* ConvertCriteriaItemPointerL(CLiwCriteriaItem* aCandidate); - void FilterInterestListL(RPointerArray& aOrginal, - RPointerArray& aFiltered); - void FilterInfoArray(RImplInfoPtrArray& aArray, RArray& aArrayPlugin, - CLiwCriteriaItem* aItem); - CLiwMenuBinding* AlreadyBound(TInt aMenuId, TInt aMenuCmd, TInt aMenuItemIndex) const; - void SynchronizeDbL(); - void ListProvidersForCriteriaL(RArray& aResult, CLiwCriteriaItem& aItem); - void HandleRemovedProviders(RArray& aInMemory, RImplInfoPtrArray& aOnSystem); - void HandleNewProvidersL(RArray& aInMemory, RImplInfoPtrArray& aOnSystem, - CLiwCriteriaItem* aItem); - void RemoveProvider(TInt aImplUid); - void AddProviderL(TUid aImplUid, CLiwCriteriaItem* aItem); - inline void ClearMenuPaneArray(); - void AttachServiceManagerPluginsL(); - void ServiceManagerPlugin_ListImplementationsL(RArray& aArray, CLiwCriteriaItem* aItem); - CLiwServiceIfBase* ServiceManagerPlugin_CreateImplementationL(TInt32 aImplUid); - TInt NumAlreadyInitializedPaneIdsL() const; - - // Leaving helper method. Handler cleanupstack issues and calls ReadInterestListL(). - void ReadInterestL(RCriteriaArray& aInterest, TInt aInterestResourceId); - - // Detaches all items from given menu. - void DoDetachMenu(TInt aMenuResourceId); - - // Detaches only those items from a given menu, which match the given interest. - - - void DoDetachMenu(TInt aMenuResourceId, RCriteriaArray& aInterest); - - // Removes unnecessary criteria items from Service Handler. - void RemoveObsoleteCriteriaItems(); - - // Removes unnecessary providers from Service Handler. - void RemoveObsoleteProviders(); - - /* Parses the metadata information stored in the opaque_data field - * of service provider registration information \c REGISTRY_INFO. - * - * The metadata information is seprated from the service command definition - * in the opaque_data field using a separator "::". - * - * @param aOpaque the opaque_data values specified in the registration information - * @param aMetaData the parsed metadata entries will be stored in this variable - * - */ - void ParseMetaData(const TDesC8& aOpaque, TDes8& aMetaData); - - //To fetch the infoArray - void QueryImplementationL(CLiwCriteriaItem* aItem, RImplInfoPtrArray& aInfoArray); - - TCapability GetServiceCapability(const TDesC& aCapName); - - //To fetch the version range specified by the consumer while creating Criteria - TBool GetVersionRange(CLiwCriteriaItem* aItem,TReal& aMinVersion, TReal& aMaxVersion); - - //To fetch the version range specified by the consumer while creating Criteria - TBool GetVersion (CLiwCriteriaItem* aItem,TReal& aVersion); - - //To fetch the implementation version specified in provider metadata - void ComputeIntfVersion(CLiwServiceData* pProvMetaData,TReal& aIntfVersion); - - private: - // Pointer to the control environment. - CCoeEnv* iCoeEnv; - - // Owns all the attached criteria items. - RPointerArray iInterestList; - - // Criteria -> provider bindings for base service providers. - RPointerArray iBaseBindings; - - // Criteria -> provider bindings for menu service providers. - RPointerArray iMenuBindings; - - // Contains the LIW menu panes. - RPointerArray iMenuPanes; - - // Input parameter list which can be given to the consumer application. - CLiwGenericParamList* iInParams; - - // Output parameter list which can be given to the consumer application. - CLiwGenericParamList* iOutParams; - - // Resource offset for LiwServiceHandler.rsc. - TInt iResourceOffset; - - // Owns all the providers currently in memory. - RPointerArray iProviders; - - TInt iNextFreeSlot; - RPointerArray iLastInitialized; - CLiwMenuPane* iSubmenu; - TInt iSubmenuCmd; - CLiwEcomMonitor* iEcomMonitor; - TBool iTlsDataOpened; - }; - - -inline void CLiwServiceHandlerImpl::ClearMenuPaneArray() - { - iMenuPanes.ResetAndDestroy(); - } - -#endif // LIW_SERVICE_HANDLER_IMPL_H - -// END of File - -