languageinterworkingfw/servicehandler/inc/liwservicehandlerimpl.h
changeset 57 61b27eec6533
parent 45 7aa6007702af
--- 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 <ecom/ecom.h>
-#include <barsread.h> 
-#include <liwcommon.h>
-#include "liwtlsdata.h"
-#include <eikmobs.h> 
-#include <e32capability.h>
-
-// 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<TCapability>& 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<TInt>& 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<CLiwCriteriaItem>& 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<CLiwCriteriaItem>& aInterest) const;
-        CLiwCriteriaItem* ConvertCriteriaItemPointerL(CLiwCriteriaItem* aCandidate);
-        void FilterInterestListL(RPointerArray<CLiwCriteriaItem>& aOrginal,
-            RPointerArray<CLiwCriteriaItem>& aFiltered);
-        void FilterInfoArray(RImplInfoPtrArray& aArray, RArray<TInt32>& aArrayPlugin,
-            CLiwCriteriaItem* aItem);   
-        CLiwMenuBinding* AlreadyBound(TInt aMenuId, TInt aMenuCmd, TInt aMenuItemIndex) const;
-        void SynchronizeDbL();
-        void ListProvidersForCriteriaL(RArray<TInt>& aResult, CLiwCriteriaItem& aItem);
-        void HandleRemovedProviders(RArray<TInt>& aInMemory, RImplInfoPtrArray& aOnSystem);
-        void HandleNewProvidersL(RArray<TInt>& aInMemory, RImplInfoPtrArray& aOnSystem, 
-            CLiwCriteriaItem* aItem);
-        void RemoveProvider(TInt aImplUid);
-        void AddProviderL(TUid aImplUid, CLiwCriteriaItem* aItem);
-        inline void ClearMenuPaneArray();
-        void AttachServiceManagerPluginsL();
-        void ServiceManagerPlugin_ListImplementationsL(RArray<TInt32>& 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<CLiwCriteriaItem> iInterestList;  
-        
-        // Criteria -> provider bindings for base service providers.
-        RPointerArray<CLiwBinding>      iBaseBindings;  
-        
-        // Criteria -> provider bindings for menu service providers.
-        RPointerArray<CLiwMenuBinding>  iMenuBindings;  
-        
-        // Contains the LIW menu panes.
-        RPointerArray<CLiwMenuPane>     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<CLiwServiceIfBase> iProviders;  
-          
-        TInt                             iNextFreeSlot;
-        RPointerArray<CLiwMenuPane>      iLastInitialized;
-        CLiwMenuPane*                    iSubmenu;
-        TInt                             iSubmenuCmd;
-        CLiwEcomMonitor*                 iEcomMonitor;
-        TBool                            iTlsDataOpened;
-    };
-
-
-inline void CLiwServiceHandlerImpl::ClearMenuPaneArray()
-    {
-    iMenuPanes.ResetAndDestroy();
-    }
-
-#endif // LIW_SERVICE_HANDLER_IMPL_H
-
-// END of File
-
-