--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xnmenu.h Wed Sep 01 12:32:46 2010 +0100
@@ -0,0 +1,270 @@
+/*
+* Copyright (c) 2002-2006 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: Xuikon Menu Plugin
+*
+*/
+
+
+
+#ifndef _XNMENU_H
+#define _XNMENU_H
+
+// INCLUDES
+#include "xncomponent.h"
+#include "mxncomponentinterface.h"
+
+class TAknsItemID;
+
+namespace XnMenuInterface
+{
+_LIT8(KType, "menu");
+
+class MXnMenuObserver
+ {
+public:
+ /**
+ * Called when options menu is about to open. Observer can add
+ * its own menu item to the aMenuItems array.
+ * @param aMenuItem menu item
+ * @param aPlugin plugin node
+ * @return ETrue if the item should be shown, EFalse otherwise
+ */
+ virtual TBool DynInitMenuItemL( CXnNodeAppIf& aMenuItem, CXnNodeAppIf* aPlugin = NULL ) = 0;
+ };
+
+/**
+* @ingroup group_xnmenufactory
+* @lib xn3menufactory.dll
+* @since S60 3.1
+*/
+class MXnMenuInterface : public XnComponentInterface::MXnComponentInterface
+ {
+public:
+ /**
+ * Soft key position enum
+ * These are same as in CEikButtonGroupContainer::TCommandPosition
+ */
+ enum TSoftKeyPosition
+ {
+ ELeft = 0,
+ ERight = 2,
+ ECenter = 3 /* Not supported when setting icon */
+ };
+
+public:
+
+ static inline const TDesC8& Type()
+ {
+ return KType;
+ }
+
+public: // New functions
+
+ /**
+ * Sets softkey image. If there was no leave, menu takes
+ * bitmap and mask ownership.
+ * @since Series 60 3.2
+ * @param aBitmap Bitmap to draw
+ * @param aMask Mask to use
+ * @param aPos Softkey position
+ * @param aPreserveAspectRatio ETrue if image's aspect ratio is preserved
+ * @param aInvertMask ETrue if white mask is used, EFalse if black mask is used
+ * @param aTransferOwnership ETrue if bitmap and mask ownerhsip is transferred to menuadapter
+ */
+ virtual void SetSoftKeyImageL(
+ CFbsBitmap* aBitmap,
+ CFbsBitmap* aMask,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ TBool aPreserveAspectRatio = EFalse, TBool aInvertMask = EFalse,
+ TBool aTransferOwnership = ETrue ) = 0;
+
+ virtual void SetSoftKeyImageL(
+ CFbsBitmap* aBitmap,
+ CFbsBitmap* aMask,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ CXnNodeAppIf* aNode,
+ TBool aPreserveAspectRatio = EFalse, TBool aInvertMask = EFalse,
+ TBool aTransferOwnership = ETrue ) = 0;
+
+ /**
+ * Sets soft key image.
+ * @param aId icon bitmap IID
+ * @param aBmpFile file path.
+ * @param aBmp Bitmap ID.
+ * @param aBmpM Bitmap mask ID.
+ * @param aPos Softkey position.
+ * @param aEnable ETrue for set icon, EFalse for use default icon.
+ */
+ virtual void SetSoftKeyImageL( const TAknsItemID& aId,
+ const TDesC& aBmpFile,
+ const TInt32 aBmp,
+ const TInt32 aBmpM,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ TBool aEnable ) = 0;
+
+ /**
+ * Sets softkey text.
+ * @since Series 60 3.2
+ * @param aText Text to draw
+ * @param aPos Softkey position
+ */
+ virtual void SetSoftKeyTextL( const TDesC& aText,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ) = 0;
+
+ /**
+ * Sets softkey.
+ * @param aNode Softey node.
+ * @param aPos Softkey position.
+ */
+ virtual void SetSoftKeyL( CXnNodePluginIf* aSoftkeyNode,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ) = 0;
+
+ /**
+ * Returns currently visible softkey node.
+ * @param aPos Softkey position.
+ * @return Currently visible softkey.
+ */
+ virtual CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ) = 0;
+
+ /**
+ * Returns softkey node, which should handle key event.
+ * @return softkey node which should handle key event, NULL if not available.
+ */
+ virtual CXnNodePluginIf* KeyEventNode() = 0;
+
+ /**
+ * Sets MXnMenuObserver observer
+ * @since S60 5.1
+ * @param aObserver observer to set
+ */
+ virtual void SetObserver( XnMenuInterface::MXnMenuObserver& aObserver ) = 0;
+
+ /**
+ * Removes the observer
+ * @since S60 5.1
+ */
+ virtual void RemoveObserver() = 0;
+
+ /**
+ * Tries to display menubar
+ * @since S60 5.2
+ * @param aMenuNodeId the menu node id
+ * @param aContextMenu ETrue if context menu should be displayed, EFalse otherwise
+ */
+ virtual void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu ) = 0;
+ };
+}
+
+class CXnMenu : public CXnComponent, public XnMenuInterface::MXnMenuInterface
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CXnMenu* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CXnMenu();
+
+ protected: // New functions
+
+ /**
+ * @see MXnMenuInterface::SetSoftKeyImage
+ */
+ void SetSoftKeyImageL(
+ CFbsBitmap* aBitmap,
+ CFbsBitmap* aMask,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ TBool aPreserveAspectRatio, TBool aInvertMask,
+ TBool aTransferOwnership = ETrue );
+
+ void SetSoftKeyImageL(
+ CFbsBitmap* aBitmap,
+ CFbsBitmap* aMask,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ CXnNodeAppIf* aNode,
+ TBool aPreserveAspectRatio, TBool aInvertMask,
+ TBool aTransferOwnership = ETrue );
+
+ /**
+ * @see MXnMenuInterface::SetSoftKeyImage
+ */
+ void SetSoftKeyImageL( const TAknsItemID& aId,
+ const TDesC& aBmpFile,
+ const TInt32 aBmp,
+ const TInt32 aBmpM,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos,
+ TBool aEnable );
+
+ /**
+ * @see MXnMenuInterface::SetSoftkeyTextL
+ */
+ void SetSoftKeyTextL( const TDesC& aText,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos );
+
+ /**
+ * @see MXnMenuInterface::SetSoftKeyL
+ */
+ void SetSoftKeyL( CXnNodePluginIf* aSoftkeyNode,
+ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos );
+
+ /**
+ * @see MXnMenuInterface::SoftKeyL
+ */
+ CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos );
+
+ /**
+ * @see MXnMenuInterface::KeyEventNode
+ */
+ CXnNodePluginIf* KeyEventNode();
+
+ /**
+ * @see MXnMenuInterface::SetObserver
+ */
+ void SetObserver( XnMenuInterface::MXnMenuObserver& aObserver );
+
+ /**
+ * @see MXnMenuInterface::RemoveObserver
+ */
+ void RemoveObserver();
+
+ /**
+ * @see MXnMenuInterface::TryDisplayingMenuBarL
+ */
+ void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu );
+
+ /**
+ * @see MXnComponentInterface::MakeInterfaceL
+ */
+ XnComponentInterface::MXnComponentInterface* MakeInterfaceL( const TDesC8& aType );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CXnMenu();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+ };
+
+#endif // _XNMENU_H
+
+// End of File