diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,309 @@ +/* +* Copyright (c) 2007-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: header file of virtual keyboard key information and control +* +*/ + + +#ifndef C_CVIRTUALKEYBOARD_KEY_CTRL_H +#define C_CVIRTUALKEYBOARD_KEY_CTRL_H +#include "peninputlayoutvkb.h" +#include "peninputlayoutbasecontrol.h" +class CVirtualKeyboard; +class CVirtualKey; + +//class CVirtualKeyCtrl +//Internal used by virtual keyboard +NONSHARABLE_CLASS(CVirtualKeyCtrl) : public CFepUiBaseCtrl + { +protected: + //internal event type + enum TVirtualKeyEventType + { + EVirtualKeyControlUp, //key up event on virtual key + EVirtualKeyControlDown, //key down event on virtual key + }; +public: + /** + * Factory function. + * + * @since S60 V5.0 + * @param aKeyboard The keyboard contains the key + * @param aKeyInfo The virtual key information data + * @return An instance of CVirtualKeyCtrl class + */ + static CVirtualKeyCtrl* NewL(CVirtualKeyboard* aKeyboard,CVirtualKey* aKeyInfo); + + /** + * Destructor + * + * @since S60 V5.0 + */ + ~CVirtualKeyCtrl(); + + //from base class CFepUiBaseCtrl + /** + * From CFepUiBaseCtrl + * Draw control + * + * @since S60 V5.0 + */ + virtual void Draw(); + + /** + * From CFepUiBaseCtrl + * Handle pointer levae event. + * This will be called only when it's got pointer down event before and + * now pointer leaves without pointer up event + * + * @since S60 V5.0 + * @param aPoint current pointer position + */ + virtual void HandlePointerLeave(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer enter event. + * This will be called only when it's got pointer down event previously then + * pointer leaves but now comes back without pointer up event. + * + * @since S60 V5.0 + * @param aPoint current pointer position + */ + virtual void HandlePointerEnter(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer down event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer up event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event + */ + virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Cancel pointer down event. + * This will be called when a control has pointer down but pointer up + * event happens in other ways. + * + * @since S60 V4.0 + * @param aFocusedFlag ETrue if got focused, otherwise EFalse + */ + virtual void CancelPointerDownL(); + + inline CVirtualKeyboard* Keyboard(); + + inline CVirtualKey* VirtualKey(); + + TBool Contains(const TPoint& aPt); + + void SetVirtualKeyImgID(TVirtualKeyDrawInfo aVirtualKeyDrawInfo); + +protected: + /** + * 2nd phase constructor + * + * @since S60 V5.0 + */ + void ConstructL(); + + /** + * Report key event to outside + * + * @since S60 V5.0 + * @param aEventType The event type for current key event + */ + void ReportKeyEvent(TControlEvent aEventType); + + /** + * Constructor + * + * @since S60 V5.0 + * @param aKeyboard The key board contains the key + * @param aKeyInfo The virtual key information + */ + CVirtualKeyCtrl(CVirtualKeyboard* aKeyboard,CVirtualKey *aKeyInfo); + +private: + /** + * Draw dimmed key + * + * @since S60 V5.0 + */ + void DrawDimKey(); + + /** + * Draw highlighed key + * + * @since S60 V5.0 + */ + void DrawHighlightKey(); + + /** + * Draw key in normal state (non-highlight/non-dimmed) + * + * @since S60 V5.0 + */ + void DrawNormalStateKey(); + + /** + * Draw key text + * + * @since S60 V5.0 + */ + void DrawKeyText(); + + /** + * Redraw and update the key + * + * @since S60 V5.0 + */ + void ReDraw(); + + /** + * Draw a key area with the given bitmap + * + * @since S60 V5.0 + * @param aDestRect The rect to be drawn + * @param aSourceRect The source area in the bitmap + * @param aBmp The bitmap used + * @param aMask The mask bitmap + * @param aInvertFlag The flag controls the mask effect. See DrawBitmapMasked. + */ + void DrawBmp(const TRect& aDestRect,const TRect& aSourceRect, + const CFbsBitmap* aBmp,CFbsBitmap* aMask, + TBool aInvertFlag = EFalse); + + /** + * Get the control event for given internal event type + * + * @since S60 V5.0 + * @param aEvent Internal event type + * @return The event type after conversion. + */ + virtual TControlEvent GetKeyEventType(TVirtualKeyEventType aEvent); + + TBool MaskBmpContains(const TPoint& aPt); + CFbsBitmap* MaskBmp(); + + void DrawIrregularKey(TVirtualKeyIrregularKeyState aKeyState, + TVirtualKeyIrregularKeyState aKeyStateMask); + +private: + /** + * virtual key information + * Not own + */ + CVirtualKey* iKeyInfo; + + /** + * virtual keyboard + * Not own + */ + CVirtualKeyboard* iKeyboard; + /** + * scan code. This is used to when searching key by scancode. + */ + TInt iScanCode; + + TVirtualKeyDrawInfo iVirtualKeyDrawInfo; + +friend class CVirtualKeyboard; + }; + +inline CVirtualKeyboard* CVirtualKeyCtrl::Keyboard() + { + return iKeyboard; + } + +inline CVirtualKey* CVirtualKeyCtrl::VirtualKey() + { + return iKeyInfo; + } + +//class CVirtualRawKeyCtrl +/* +CVirtualRawKeyCtrl differes with CVirtualKeyCtrl in that when pressed, it generates +raw key event ( by simulating) which works just like a hardware key +*/ +NONSHARABLE_CLASS(CVirtualRawKeyCtrl) : public CVirtualKeyCtrl + { +public: + /** + * Factory function. + * + * @since S60 V5.0 + * @param aKeyboard The keyboard contains the key + * @param aKeyInfo The virtual key information data + * @return An instance of CVirtualKeyCtrl class + */ + static CVirtualRawKeyCtrl* NewL(CVirtualKeyboard* aKeyboard,CVirtualKey* aKeyInfo); + + /** + * Cancel pointer down event. + * This will be called when a control has pointer down but pointer up + * event happens in other ways. If overrided, this base implementation + * must be called in order to report the event. + * + * @since S60 V4.0 + * @param aFocusedFlag ETrue if got focused, otherwise EFalse + */ + virtual void CancelPointerDownL(); + + /** + * From CFepUiBaseCtrl + * Handle pointer levae event. + * This will be called only when it's got pointer down event before and + * now pointer leaves without pointer up event + * + * @since S60 V5.0 + * @param aPoint current pointer position + */ + virtual void HandlePointerLeave(const TPoint& aPoint); +private: + /** + * Constructor + * + * @since S60 V5.0 + * @param aKeyboard The keyboard contains the key + * @param aKeyInfo The virtual key information data + */ + CVirtualRawKeyCtrl(CVirtualKeyboard* aKeyboard,CVirtualKey* aKeyInfo); + + //from base CVirtualKeyCtrl + /** + * Get the control event for given internal event type + * + * @since S60 V5.0 + * @param aEvent Internal event type + * @return The event type after conversion. + */ + virtual TControlEvent GetKeyEventType(TVirtualKeyEventType aEvent); + }; + +#endif //C_CVIRTUALKEYBOARD_KEY_CTRL_H + +//end of file \ No newline at end of file