--- /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 <e32std.h>
+#include <e32base.h>
+#include <e32cmn.h>
+
+#include <peninputlayoutctrlgroup.h>
+
+// 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