diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_visual_api/inc/alf/alfevent.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alfevent.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,325 @@ +/* +* Copyright (c) 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: Event class. +* +*/ + + + +#ifndef T_ALFEVENT_H +#define T_ALFEVENT_H + +#include +#include + +class CAlfDisplay; +class CAlfVisual; + +/** + * Event class. + * This class would typically be passed to a control. + * One example of an event would be a keypress, + * or a custom message arriving from another control. + * You cannot derive from this class. + * Usage: + * A custom control, derived from Control, overwrides, OfferEventL() + * @code + * TBool LayoutControl::OfferEventL(const TAlfEvent& aEvent) + * { + * TBool handled = EFalse; + * if ( aEvent.IsKeyEvent() ) + * { + * / Do something + * handled = ETrue; + * } + * else if ( aEvent.IsPointerEvent() ) + * { + * switch ( aEvent.PointerEvent().iType ) + * { + * case TPointerEvent::EButton1Down: + * / Do something + * break; + * case TPointerEvent::EButton1Up: + * / Do something + * break; + * case TPointerEvent::EDrag: + * / Do something + * break; + * case TPointerEvent::EButtonRepeat: + * / Do something + * break; + * default: + * / Do something + * break; + * } + * handled = ETrue; + * } + * } + * @endcode + * @see MAlfEventHandler::OfferEventL() + * @lib alfclient.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( TAlfEvent ) + { + +public: + + /** Event types. This is the most general type for the message.*/ + enum TType + { + ETypeCustom, //!< a message passed from one control to another + ETypeKey, //!< a message regarding a keypress + ETypePointer, //!< a message regarding a touch screen interface + ETypeIdleBegin, //!< the toolkit has just entered the idle state + ETypeIdleEnd, //!< the toolkit has just left the idle state + ETypeScroller, //!< a message sent from a scroller + + EAlfEventTypeLast = 1024 + }; + + /* Constructors. */ + + /** + * Constructor. + */ + TAlfEvent(CAlfDisplay& aDisplay, TType aType); + + /** + * Constructor for custom events (not bound to any display). + */ + IMPORT_C TAlfEvent(TInt aCustomParam); + + /** + * Constructor for custom events (not bound to any display). + */ + IMPORT_C TAlfEvent(TInt aCustomParam, TInt aCustomEventData); + + /** + * Constructor for scroller event bound to a display. + */ + IMPORT_C TAlfEvent(CAlfDisplay&, const TAlfScrollerEvent& aEvent ); + + /** + * Constructor for key events. + * + * @param aDisplay Display where the event is received + * @param aKeyEvent Key event definition + * @param aType Event code + */ + IMPORT_C TAlfEvent(CAlfDisplay& aDisplay, const TKeyEvent& aKeyEvent, TEventCode aType); + + /** + * Constructor for pointer events. + * + * @param aDisplay Display where the event is received + * @param aPointerEvent Pointer event definition + * iPosition Contains the coordinates relative to the hit visual + * iParentPosition Contains the coordinates relative to the used display area. + */ + IMPORT_C TAlfEvent(CAlfDisplay& aDisplay, const TPointerEvent& aPointerEvent ); + + /** + * Determines whether the event is a pointer event. + * + * @todo needs more description + * @return ETrue if pointer event. + */ + IMPORT_C TBool IsPointerEvent() const; + + /** + * Returns pointer event. Panics is not pointer event. + * + * On the stylus up and down events, the hit leaf visual can be fetched with + * Visual() function. If the function returns a visual, the iPosition member + * variable of the TPointerEvent states the event coordinates relative to that + * visual area. If the visual is not found, the iPosition is the same as iParentPosition. + * + * The iParentPosition memeber variable of the TPointerEvent states the event + * coordinates relative to the used display visible area. See, that this is usually + * the main pane area and not the physical screen dimensions. + * + * The iParentPosition coornidates can be mapped to any visual's local coordinates by + * visual->DisplayToLocal( aEvent.PointerEvent().iParentPosition ); + * + * If the visual is set, the following applies: + * aEvent.Visual()->LocalToDisplay( aEvent.PointerEvent().iPosition ) == aEvent.PointerEvent().iParentPosition + * aEvent.Visual()->DisplayToLocal( aEvent.PointerEvent().iParentPosition ) == aEvent.PointerEvent().iPosition + * + * @return Pointer event. + */ + IMPORT_C const TPointerEvent& PointerEvent() const; + + /** + * Returns the type of the event. + * @see TType + */ + IMPORT_C TType Type() const; + + /** + * Determines whether the event is a custom event. + */ + IMPORT_C TBool IsCustomEvent() const; + + /** + * Returns whether the event is a scroller event. + * + * @return EFalse iff the event is not a scroller event + */ + IMPORT_C TBool TAlfEvent::IsScrollerEvent() const; + + /** + * Access an ALF scroller event object. + * + * Only can be called if IsScrollerEvent() is not EFalse + * + * @return a structure containing the scroller event + */ + IMPORT_C TAlfScrollerEvent ScrollerEvent() const; + + /** + * Determines whether the event is a key event, for example, a key was pressed. + * + * @return ETrue is key event. + */ + IMPORT_C TBool IsKeyEvent() const; + + /** + * Returns key event code. Panics if not key event. + * + * @return Key event code. + */ + IMPORT_C const TEventCode& Code() const; + + /** + * Returns key event. Panics if not key event. + * + * @return Key event. + */ + IMPORT_C const TKeyEvent& KeyEvent() const; + + /** + * Returns custom paramter. Panics if not custom event. + * + * @return Custom parameter. + */ + IMPORT_C TInt CustomParameter() const; + + /** + * Returns additional custom event data. Panics if not a custom event. + * This can be either an identifier to find out the actual event data or + * it can contain the data directly. + * + * @return Custom event data. + */ + IMPORT_C TInt CustomEventData() const; + + /** + * Sets display + * + * @param aDisplay New display. Ownership not transferred. + */ + void SetDisplay( CAlfDisplay* aDisplay ); + + /** + * Returns the display that the event comes from, if any. + * NULL is returned if the event has not had a display set. Custom events are + * likely not to have a display set. Key events may have a display set + * + * @return The display the event is associated with + */ + IMPORT_C CAlfDisplay* Display() const; + + /** + * Pointer is down. + * @return ETrue if this is a pointer event and the pointer has been pressed down. + */ + IMPORT_C TBool PointerDown() const; + + /** + * Pointer is up. + * @return ETrue if this is a pointer event and the pointer has been lifted up. + */ + IMPORT_C TBool PointerUp() const; + + /** + * Pointer event is a long press. + * @return ETrue if this is a pointer event and the pointer has been pressed for long tap duration. + */ + IMPORT_C TBool PointerLongTap() const; + + /** + * Sets visual associated with the event + * + * @param aVisual Associated visual. + */ + IMPORT_C void SetVisual(CAlfVisual* aVisual); + + /** + * Returns visual associated with the event + * + * @return Associated visual. NULL if not set. + */ + IMPORT_C CAlfVisual* Visual() const; + +private: // data + + /** The display from where the event originated. */ + CAlfDisplay* iDisplay; + + /** Type of this event, if it is a Symbian S60 event code. + * + * For example: EEventKeyUp, EEventKeyDown + * + * @see Symbian event codes. + */ + TEventCode iCode; + + /** The S60 struct that contains scancode, key event information, etc. + * @see Symbian event codes. + */ + TKeyEvent iKeyEvent; + + /** The S60 struct that contains pointer device event info, which would be + * triggered by touch screen interaction. + * @see Symbian event codes. + */ + TAdvancedPointerEvent iPointerEvent; + + /** + * Holds an alf scroller event object + */ + TAlfScrollerEvent iScrollerEvent; + + /** Parameter for custom events. */ + TInt iParam; + + /** Additional event data for custom events. */ + TInt iCustomEventData; + + /** Type of the event. */ + TType iType; + + /** Visual which the event is associated with. */ + CAlfVisual* iVisual; + +private: + // Advanced pointer event occupies the extra space + //TInt iSpare1; + //TInt iSpare2; + }; + + + +#endif // T_ALFEVENT_H