diff -r 000000000000 -r eb1f2e154e89 textinput/peninputfingerhwr/inc/peninputfingerhwrrangeselector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwr/inc/peninputfingerhwrrangeselector.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,361 @@ +/* +* Copyright (c) 2009 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 of char range selector. +* +*/ + +#ifndef C_PENINPUTFINGERHWRRANGESELECTOR_H +#define C_PENINPUTFINGERHWRRANGESELECTOR_H + +// INCLUDES +#include +#include +#include + +#include + +// FORWARD DECLARATIONS +class CAknFepCtrlEventButton; +class CAknFepCtrlMultiImageButton; + +// CLASS DECLARATION + +/** + * class CPeninputFingerHwrRangeSelector. + * + * a droplist as range selector. + * + * @lib peninputfingerhwr.lib + * @since S60 v5.0 + */ +class CPeninputFingerHwrRangeSelector : public CControlGroup + { +public: + /** + * Symbian constructor + * + * @since S60 v5.0 + * @param aUiLayout The layout + * @param aId The control id + * @return pointer of created object. + */ + static CPeninputFingerHwrRangeSelector* NewL( CFepUiLayout* aUiLayout, TInt aId ); + + /** + * Symbian constructor + * + * @since S60 v5.0 + * @param aUiLayout The layout + * @param aId The control id + * @return pointer of created object. + */ + static CPeninputFingerHwrRangeSelector* NewLC( CFepUiLayout* aUiLayout, TInt aId ); + + /** + * standard c++ destructor. + * + * @since S60 v5.0 + */ + ~CPeninputFingerHwrRangeSelector(); + +public: + /** + * popup the list. + * + * @since S60 v5.0 + * + * @param aDirect direction of popup. It can be one of the following: + * EPopDirAuto, EPopDirLeft, EPopDirRight, EPopDirTop, EPopDirDown. + * default value is EPopDirAuto. + * See TPeninputPopListDirection + * @return None + */ + void Popup( TInt aDirect = EPopDirAuto); + + /** + * cancel the popup. + * + * @since S60 v5.0 + * @return None + * + */ + void CancelPopup(); + + /** + * get visibility of popup. + * @since S60 v5.0 + * @return ETrue if the popup is visible + */ + TBool IsPopup(); + + /** + * set permitted char range. + * + * @since S60 v5.0 + * @param aPermittedRanges permitted character ranges. It can be combination of the following: + * ERangeNative, ERangeEnglish, ERangeNumber. + * See TAknFepPenInputRange. + */ + void SetPermittedRanges( const TInt aPermittedRanges ); + + /** + * set current char range. + * + * @since S60 v5.0 + * @param aCurRange current character range. It must be one of the following: + * EFingerHwrNativeRange, EFingerHwrEnglishRange,EFingerHwrNumberRange. + * See TFingerHwrRange. + * @param aActive + */ + void SetCurRange( const TInt aCurRange, const TBool aActive ); + + /** + * set base rect of popup. + * + * @since S60 v5.0 + * @param aRect + * @return None + */ + void SetBaseRect(const TRect& aRect); + +protected: //virtuals from CControlGroup (CFepUiBaseCtrl) + + /** + * From CControlGroup + * Handle pointer down event + * + * @since S60 V5.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * From CControlGroup + * Handle pointer up event + * + * @since S60 V5.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + + /** + * From CControlGroup + * Handle pointer move event + * + * @since S60 54.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); + +private: + + /** + * C++ constructor + * + * @since S60 v5.0 + * @param aFepUiLayout A Ui Layout environment (CFepUiLayout) + * @param aControlId Control id + * @return none. + */ + CPeninputFingerHwrRangeSelector(CFepUiLayout* aFepUiLayout, TInt aControlId); + + /** + * Symbian second-phase constructor + * + * @since S60 v5.0 + * @return None + */ + void ConstructL(); + + /** + * EventButton creation helper. + * + * @since S60 v5.0 + * @param aCtrlId button control id. + * @param aResId resource id. + * @param aEvent event id; + * @param aUnicode a unicode value to be sent + * @return pointer to created CAknFepCtrlEventButton obj. + */ + CAknFepCtrlEventButton* CreateEventBtnL( TInt aCtrlId, TInt32 aResId, + TInt aEvent = 0xFFFF,TInt aUnicode=0 ); + + + /** + * MultiImageButton creation helper. + * + * @since S60 v5.0 + * @param aCtrlId button control id. + * @param aResId resource id. + * @return pointer to created CAknFepCtrlMultiImageButton obj. + */ + CAknFepCtrlMultiImageButton* CreateMultiBtnL( TInt aCtrlId, TInt32 aResId ); + + /** + * EventButton layout helper. Move button to specified rect. + * + * @since S60 v5.0 + * @param aButton the button to move + * @param aRect new rect of button + * @param aXPadding horz padding of button icon. + * @param aYPadding vert padding of button icon. + * @param aReloadImages Specifies whether the images is to be reloaded. + * @return None + */ + void MoveIconButton( CAknFepCtrlEventButton* aButton, const TRect& aRect, + TInt aXPadding=0, TInt aYPadding=0, TBool aReloadImages=ETrue ); + + /** + * MultiIconButton layout helper. Move button to specified rect. + * + * @since S60 v5.0 + * @param aButton the button to move + * @param aRect new rect of button + * @param aXPadding horz padding of button icon. + * @param aYPadding vert padding of button icon. + * @param aReloadImages Specifies whether the images is to be reloaded. + * @return None + */ + void MoveMultiIconButton( CAknFepCtrlMultiImageButton* aButton, + const TRect& aRect, TInt aXPadding=0, TInt aYPadding=0, + TBool aReloadImages=ETrue ); + + /** + * layout buttons. + * + * @since S60 v5.0 + * @param aPermittedRanges permitted char range flags. It can be combination of the following: + * ERangeNative + * ERangeEnglish + * ERangeNumber. + * See TAknFepPenInputRange. + * @param aCurRange current range id. It can be one of the following: + * EFingerHwrNativeRange + * EFingerHwrEnglishRange + * EFingerHwrNumberRange + * EFingerHwrSymbolRange + * @param aActive Specifies whether the current range is active. + * @param aShowDropList Specifies whether the popup is visible. + * @param aDropDirect direction of popup. It can be one of the following: + * EPopDirAuto + * EPopDirLeft + * EPopDirRight + * EPopDirTop + * EPopDirDown + * See TPeninputPopListDirection. + * @return none. + */ + void LayoutRangeButtons( TInt aPermittedRanges, TInt aCurRange, + TBool aActive, TBool aShowDropList, TInt aDropDirect ); + + /** + * calculates popup direction. + * + * @since S60 v5.0 + * @param aBound rect of display area. + * @param aTarget position of popup list. + * @param aItemSize item size. + * @param aItemCount item count. + * @param aDirect direction of popup. It can be one of the following: + * EPopDirAuto + * EPopDirLeft + * EPopDirRight + * EPopDirTop + * EPopDirDown + * See TPeninputPopListDirection. + * @return a TPoint object as popup direction and offset. + */ + TPoint CalcDropListDirection( const TRect& aBound, const TPoint& aTarget, + const TSize& aItemSize, TInt aItemCount, TInt aDirect ); + + /** + * calculate popup rect. + * + * @since S60 v5.0 + * @param aRect base rect of popup + * @param aWidth new width of popup + * @param aHeight new height of popup + * @return none + */ + void CalcDropListRect( TRect& aRect, const TInt aWidth, const TInt aHeight ); + +private: + /** + * chinese range button. + * not own. + */ + CAknFepCtrlEventButton* iRangeChBtn; + + /** + * english range button. + * not own. + */ + CAknFepCtrlEventButton* iRangeEnBtn; + + /** + * numeric range button. + * not own. + */ + CAknFepCtrlEventButton* iRangeNumBtn; + + + /** + * chinese range button, selected. + * not own. + */ + CAknFepCtrlMultiImageButton* iRangeChMiBtn; + + /** + * english range button, selected. + * not own. + */ + CAknFepCtrlMultiImageButton* iRangeEnMiBtn; + + /** + * numeric range button, selected. + * not own. + */ + CAknFepCtrlMultiImageButton* iRangeNumMiBtn; + + /** + * visibility of popup list. + */ + TBool iPopupVisible; + + /** + * bit mask of permitted char ranges. + */ + TInt iPermittedRanges; + + /** + * Current char range id. + */ + TInt iCurRange; + + /** + * whether current range is active. + */ + TBool iCurRangeActive; + + /** + * base rect of popup. + */ + TRect iPopupBaseRect; + + }; + +#endif // C_PENINPUTFINGERHWRRANGESELECTOR_H