diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/eikmnbut.h --- a/epoc32/include/mw/eikmnbut.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/eikmnbut.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,160 @@ -eikmnbut.h +/* +* Copyright (c) 2000-2006 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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Uikon legacy button that launches a menu when activated +* +*/ + + +#if !defined(__EIKMNBUT_H__) +#define __EIKMNBUT_H__ + +#if !defined(__EIKMOBS_H__) +#include +#endif + +#if !defined(__EIKCMBUT_H__) +#include +#endif + +class CEikMenuPane; + +/** + * This class implements a command button that, when pressed, raises a Menu pane. + * + * This class does NOT implement S60 look-and-feel and is not skinned. + * + * @lib eikcoctl.dll + * @since S60 1.0 + */ +class CEikMenuButton : public CEikCommandButton, private MEikMenuObserver +{ +public: + /** + * C++ constructor + */ + IMPORT_C CEikMenuButton(); + + /** + * destructor + */ + IMPORT_C ~CEikMenuButton(); + + /** + * 2nd phase constructor using a MNBUT resource struct + * + * @param aReader A constructed resource reader. + */ + IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); + + /** + * Launch the related menu pane + * + * @param aObserver Mandatory supplied menu observer pointer. + */ + IMPORT_C void LaunchPopupMenuL(MEikMenuObserver* aObserver); + + /** + * Set the menu pane id to be launched when the control is activated. + * + * @param aMenuPaneId Resource ID of the menu pane to be launched + */ + IMPORT_C void SetMenuPaneId(TInt aMenuPaneId); + +protected: + + /** + * From CCoeControl + * + * Serialize the state of the control to the given stream + * + * @param aWriteStream Stream to write to + */ + IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const; + +public: // from CEikButtonBase + + /** + * Triggers the change of appearance of the button that is associated with the button being pressed + */ + IMPORT_C void Animate(); + +public: // From CCoeControl + + /** + * From CCoeControl + * + * Framework method called when a pointer event is found to be within this control's boundaries. + * The default implementation causes the associated menu to be presented to the screen. + * + * @param aPointerEvent Pointer event to process + */ + IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); + +private: + + /** + * From MEikCommandObserver + * + * Framework method called to processs a command ID + * + * @param aCommandId ID of the command to respond to. + */ + IMPORT_C void ProcessCommandL(TInt aCommandId); + + /** + * From MEikMenuObserver + * + * Called by the Uikon framework to handle the emphasising or de-emphasising of + * a menu window. + * + * CEikMenuBar objects call this on their observer to emphasise + * themselves when they are displayed, and de-emphasise themselves when they + * stop displaying. + * + * @param aMenuControl The menu control + * @param aEmphasis ETrue to emphasize the menu, EFalse otherwise + */ + IMPORT_C void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); + +private: + void ClosePopupMenu(); + void DoLaunchPopupMenuL(); +private: + /** + * From CAknControl + */ + IMPORT_C void* ExtensionInterface( TUid aInterface ); + +private: + /** + * The object to receive the menu events + * Not Owned + */ + MEikMenuObserver* iMenuObserver; + + /** + * Holds a menu pane object to be popped up + * Owned + */ + CEikMenuPane* iMenuPopup; + + /** + * Resource ID of the menu pane + */ + TInt iMenuPaneId; + + TInt iSpare; + }; + +#endif