--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/menu_content_service_api/inc/mcsmenu.h Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 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: Definition of the session to the Menu
+*
+*/
+
+
+#ifndef __MCSMENU_H__
+#define __MCSMENU_H__
+
+#include <e32base.h>
+#include "mcsinternaltypes.h"
+class TMenuItem;
+class CMenuItem;
+class CMenuOperation;
+class CMenuFilter;
+
+/**
+ * Menu session.
+ * The menu is an ID-based tree structure of menu folders and items.
+ * @lib mcsmenu.lib
+ * @since S60 v5.0
+ */
+NONSHARABLE_CLASS( RMenu ): public RSessionBase
+ {
+
+ /**
+ * RMenu acts on behalf on CMenuItem (CMenuItem is not a subsession object).
+ * Data returned by the methods below usually exists in the transfer
+ * buffer -> use it immediately or copy, because the buffer will be
+ * overwritten very soon!
+ */
+ friend class CMenuItem;
+
+public:
+
+ /**
+ * Constructor.
+ * @since S60 v5.0
+ * @capability None.
+ * @throws None.
+ * @panic None.
+ */
+ RMenu() { iData = NULL; }
+
+ /**
+ * Close the session. Safe to call if not open.
+ * @since S60 v5.0
+ * @capability None.
+ * @throws None.
+ * @panic None.
+ */
+ IMPORT_C void Close();
+
+ /**
+ * Open the session.
+ * @since S60 v5.0
+ * @param aName Name of the menu content to open.
+ * @capability ECapabilityReadDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C void OpenL( const TDesC& aName );
+
+ /**
+ * Get ID of the root folder.
+ * @since S60 v5.0
+ * @return ID of the root folder.
+ * @capability ECapabilityReadDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C TInt RootFolderL();
+
+ /**
+ * Get list of items.
+ * @since S60 v5.0
+ * @param aItemArray Array receiving item list. Existing content not touched
+ * (new items are appended).
+ * @param aFolder Get items from this folder.
+ * @param aFilter Filter criteria or NULL for unfiltered results.
+ * @param aRecursive ETrue to recurse folders, EFalse for immediate
+ * children only.
+ * @capability ECapabilityReadDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C void GetItemsL(
+ RArray<TMenuItem>& aItemArray,
+ TInt aFolder,
+ const CMenuFilter* aFilter = NULL,
+ TBool aRecursive = EFalse );
+
+ /**
+ * Get array of running applications
+ */
+ IMPORT_C void GetRunningAppsL( RArray<TUid>& aArray );
+
+ /**
+ * Remove item.
+ * @since S60 v5.0
+ * @param aId ID of item to be removed.
+ * @param aStatus Observer request status. When the operation completes,
+ * this status will be completed with the resulting error code.
+ * @return Asynchronous operation. Owned by the caller.
+ * @capability ECapabilityWriteDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C CMenuOperation* RemoveL( TInt aId, TRequestStatus& aStatus );
+
+ /**
+ * Move items to another folder.
+ * @since S60 v5.0
+ * @param aItems ID-s of items to be to be moved. All items must be in
+ * the same folder.
+ * @param aFolder Target folder.
+ * @param aMoveBefore. In the target folder, items will be inserted before
+ * this item (if found). If the target folder contains no item with that ID,
+ * the moved items are appended to the end of existing items. Pass 0 to
+ * append to the end.
+ * @param aStatus Observer request status. When the operation completes,
+ * this status will be completed with the resulting error code.
+ * @return Asynchronous operation. Owned by the caller.
+ * @capability ECapabilityWriteDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C CMenuOperation* MoveToFolderL(
+ const RArray<TInt>& aItems,
+ TInt aFolder,
+ TInt aMoveBefore,
+ TRequestStatus& aStatus );
+
+ /**
+ * Move item to a different position in its current folder.
+ * @since S60 v5.0
+ * @param aId ID-s of item to be to be reordered.
+ * @param aMoveBefore. Move the item before this item (if found).
+ * If aMoveBefore is not found, the aItem is moved to the end.
+ * @param aStatus Observer request status. When the operation completes,
+ * this status will be completed with the resulting error code.
+ * @return Asynchronous operation. Owned by the caller.
+ * @capability ECapabilityWriteDeviceData.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C CMenuOperation* ReorderL(
+ TInt aId,
+ TInt aMoveBefore,
+ TRequestStatus& aStatus );
+
+ /**
+ * Start checking the number of allocated object through this session.
+ * @since S60 v5.0
+ * @capability ECapabilityAllFiles.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C void ResourceMark();
+
+ /**
+ * Check that the number of allocated object through this session
+ * matches the same of when the last call to ResourceMark was made.
+ * @since S60 v5.0
+ * @capability ECapabilityAllFiles.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C void ResourceCheck();
+
+ /**
+ * Get number of allocated object through this session.
+ * @since S60 v5.0
+ * @return Number of allocated object through this session.
+ * @capability ECapabilityAllFiles.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C TInt ResourceCount();
+
+ /**
+ * Simulate a heap allocation failure for server heap. Has empty
+ * implementation for the UDEB server.
+ * @since S60 v5.0
+ * @param aType Type of heap failure simulation.
+ * @param aRate Rate of failure.
+ * @capability ECapabilityAllFiles.
+ * @throws System-wide error codes if an error occurs.
+ * @panic None.
+ */
+ IMPORT_C void __DbgSetAllocFail
+ ( RAllocator::TAllocFail aType, TInt aRate );
+
+private:
+
+ /**
+ * Connect session.
+ * @return Error code.
+ */
+ TInt ConnectSession();
+
+ /**
+ * Get item attribute value.
+ * @param aId Item ID.
+ * @param aAttrName. Attribute name.
+ * @return Attribute value, or NULL if attribute is not defined.
+ * Owner is the caller.
+ */
+ HBufC* GetAttributeL( TInt aId, const TDesC& aAttrName );
+
+
+ /**
+ * Get item attribute name list.
+ * @param aId Item ID.
+ * @param aList Attribute item list.
+ */
+ void GetAttributeListL( TInt aId, RArray<TAttributeName>& aList );
+
+ /**
+ * Get item header.
+ * @param aId Item ID.
+ * @return Item header. The header is in the transfer buffer, copy it.
+ */
+ const TMenuItem& GetHdrL( TInt aId );
+
+ /**
+ * Handle command.
+ * @param aItem Item.
+ * @param aCommand Command.
+ * @param aParams. Command parameters.
+ * @param aStatus Observer request status. When the operation completes,
+ * this status will be completed with the resulting error code.
+ * @return Asynchronous operation. Owned by the caller.
+ */
+ CMenuOperation* HandleCommandL(
+ CMenuItem& aItem,
+ const TDesC8& aCommand,
+ const TDesC8& aParams,
+ TRequestStatus& aStatus );
+
+private: // data
+
+ class TData;
+ TData* iData; ///< Private data. Own.
+
+ };
+
+#endif // __MCSMENU_H__