textinput/peninputfingerhwr/inc/peninputfingerhwrrangeselector.h
changeset 0 eb1f2e154e89
--- /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