serviceapifw_plat/liw_service_interface_menu_api/inc/liwserviceifmenu.h
changeset 0 99ef825efeca
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceapifw_plat/liw_service_interface_menu_api/inc/liwserviceifmenu.h	Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,137 @@
+/*
+* 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:       Declares service API for providers offering menu services for 
+*                consumers.
+*
+*/
+
+
+
+
+
+
+#ifndef LIW_SERVICE_IF_MENU_H
+#define LIW_SERVICE_IF_MENU_H
+
+// INCLUDES
+#include <liwserviceifbase.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CLiwMenuPane;
+
+// CLASS DECLARATION
+
+/**
+* This is the menu service interface to access providers that offer menu services.
+*
+* Menu service providers should inherit this class. Providers offering 
+* only base services should inherit CLiwServiceIfBase instead.
+*
+* @lib ServiceHandler.lib
+* @since Series 60 2.6
+* @see CLiwServiceIfBase
+**/
+class CLiwServiceIfMenu: public CLiwServiceIfBase
+    {
+    public:
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CLiwServiceIfMenu();
+
+        /**
+        * Provider should implement this method to initialise a menu pane by adding 
+        * provider specific menu items. The LIW framework gives the parameters to be 
+        * used in the addition process.
+        *
+        * @param aMenuPane Menu pane handle.
+        * @param aIndex The position of the item where to add menu items.
+        * @param aCascadeId ID of cascade menu item.
+        * @param aInParamList Input parameter list for provider's parameter checking.
+        */
+        virtual void InitializeMenuPaneL(
+            CLiwMenuPane& aMenuPane,
+            TInt aIndex,
+            TInt aCascadeId,
+            const CLiwGenericParamList& aInParamList) = 0;
+
+        /**
+        * Provider should implement this method to handle a menu command. Called by the 
+        * Service Handler when a consumer calls ExecuteMenuCmdL().
+        *
+        * @param aMenuCmdId Original provider specific ommand ID for the menu command.
+        *                   Defined in the provider's menu item resource.
+        * @param aInParamList Input parameters, can be an empty list.
+        * @param aOutParamList Output parameters, can be an empty list.
+        * @param aCmdOptions Options for the command, see KLiwCmdOpt* in LiwCommon.hrh.
+        * @param aCallback Callback if asynchronous command handling is wanted by consumer.
+        *                  The provider may or may not support this. A provider should 
+        *                  leave with KErrNotSupported, if not.
+        * @leave KErrNotSupported Callback is not supported.
+        */
+        virtual void HandleMenuCmdL(
+            TInt aMenuCmdId,
+            const CLiwGenericParamList& aInParamList,
+            CLiwGenericParamList& aOutParamList,
+            TUint aCmdOptions = 0,
+            const MLiwNotifyCallback* aCallback = NULL) = 0;
+
+        /**
+        * Returns current LIW menu pane for this menu service provider.
+        *
+        * @return Pointer to the current LIW menu pane object. 
+        */
+        IMPORT_C const CLiwMenuPane* MenuPane() const;
+        
+    protected:
+        IMPORT_C virtual void* ExtensionInterface(TUid aInterface);        
+        
+    private:
+        // Rest of the class is for LIW's internal use and doesn't consern 
+        // service providers.    
+        friend class CLiwServiceHandlerImpl;
+
+        void InitializeMenuPaneHookL(
+            CLiwMenuPane* aMenuPane,
+            TInt aIndex,
+            TInt aCascadeId,
+            const CLiwGenericParamList& aInParamList);
+
+        void HandleMenuCmdHookL(
+            CLiwMenuPane* aMenuPane,
+            TInt aMenuCmdId,
+            const CLiwGenericParamList& aInParamList,
+            CLiwGenericParamList& aOutParamList,
+            TUint aCmdOptions = 0,
+            const MLiwNotifyCallback* aCallback = NULL);
+        
+    private:
+        CLiwMenuPane* iMenuPane; // Not owned.
+        
+        // Reserved member        
+        TAny* iSpare;         
+    };
+
+
+#endif // LIW_SERVICE_IF_MENU_H
+
+// End of file