textinput/peninputvkbcn/ctrlinc/peninputvkbclientarea.h
branchRCL_3
changeset 21 ecbabf52600f
parent 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputvkbcn/ctrlinc/peninputvkbclientarea.h	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,541 @@
+/*
+* Copyright (c) 2002-2005 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:  Implementation of the vkb client area
+*
+*/
+
+
+#ifndef C_CAKNFEPVKBCLIENTAREA_H
+#define C_CAKNFEPVKBCLIENTAREA_H
+
+//  INCLUDES
+#include <peninputlayoutctrlgroup.h>
+#include <peninputvkbctrlext.h>
+
+#include "peninputvkb.hrh"
+#include "peninputvkbwindow.h"
+#include "peninputvkbcnlafdatamgr.h"
+/** class forward decalaration */
+class CFepUiLayout;
+class CAknFepVkbCtrlPool;
+class CAknFepLayoutPool;
+class CAknFepVkbImLayout;
+class CPeninputVkbLayoutInfo;
+class MAknFepVkbDataProvider;
+class CPeninputVkbCtrlExt;
+class CAknFepVkbCompositionField;
+class CFepCtrlDropdownList;
+class CAknFepCtrlRangeBar;
+class CAknFepCtrlEventButton;
+class CFepLayoutEditAreaBase;
+class CAknFepVkbNumericKepMappingMgr;
+class CAknFepCtrlVkbLayout;
+class CPeninputCnGenericVkbLafMgr;
+
+// class declarations
+/**
+ *  client area class
+ *
+ *  @lib peninputvkbcn.lib
+ *  @since S60 v3.2
+ */    
+class CAknFepVkbClientArea : public CControlGroup
+    {    
+public:
+
+    /**
+     * Create one CAknFepVkbClientArea object
+     *
+     * @since S60 v3.2
+     * @param aUiLayout The layout plugin
+     * @param aControlId This control ID
+     * @param aDataProvider The interface of data provider
+     * @return The CFepCtrlDropdownList object.
+     */  
+    static CAknFepVkbClientArea* NewL(CFepUiLayout* aUiLayout, 
+                                      TInt aControlId,
+                                      MAknFepVkbDataProvider* aDataProvider,
+                                      CPeninputCnGenericVkbLafMgr* aLafMgr);
+
+    /**
+     * Create one CAknFepVkbClientArea object
+     *
+     * @since S60 v3.2
+     * @param aUiLayout The layout plugin
+     * @param aControlId This control ID
+     * @param aDataProvider The interface of data provider
+     * @return The CFepCtrlDropdownList object.
+     */      
+    static CAknFepVkbClientArea* NewLC(CFepUiLayout* aUiLayout, 
+                                       TInt aControlId,
+                                       MAknFepVkbDataProvider* aDataProvider,
+                                       CPeninputCnGenericVkbLafMgr* aLafMgr);
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.2
+     * @return None.
+     */   
+    virtual ~CAknFepVkbClientArea();  
+    
+    /**
+     * Size change function
+     *
+     * @since S60 v3.2
+     * @return None.
+     */       
+    void SizeChanged();
+
+    /**
+     * Handle event 
+     * @since Series 60 3.2
+     * @param aEventType The event type
+     * @param aCtrl The control who sends the event
+     * @param aEventData The event data
+     * @return None
+     */
+    void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData);
+    
+    /**
+     * Change input method layout
+     *
+     * @since S60 v3.2
+     * @param aRange The range defined in TAknFepVkbIMLayout
+     * @param aChangeVkb The flag of changing vkb or not     
+     * @return None.
+     */
+    void ChangeImLayout(TInt aImLayout, TBool aChangeVkb = ETrue);
+    
+    /**
+     * Change vkb layout
+     *
+     * @since S60 v3.2
+     * @param aVkbLayout The new vkb layout
+     * @return None.
+     */ 
+    void ChangeVkbLayout(TInt aVkbLayoutId = -1);
+
+    /**
+     * Loop vkb layout
+     *
+     * @since S60 v3.2
+     * @param aType The flag showing shift down or capslock down
+     * @return None.
+     */ 
+    void LoopVkbLayout(TVkbShiftType aType, TBool aNotify = EFalse);
+
+    /**
+     * Get the string length in composition field
+     *
+     * @since S60 v3.2
+     * @return The string length in composition field.
+     */     
+    TInt CompositionFieldStringLength();
+
+    /**
+     * Set rect of parent, top parent, layout
+     *
+     * @since S60 v3.2
+     * @param aRect The rect of client rect
+     * @return None.
+     */     
+    void SetWholeWindowRect(const TRect& aRect);
+
+    /**
+     * Set top parent
+     *
+     * @since S60 v3.2
+     * @param aParent The vkb window
+     * @return None.
+     */      
+    void SetTopParent(CFepUiBaseCtrl* aParent);
+
+    /**
+     * Reorganize controls
+     *
+     * @since S60 v3.2
+     * @param aImLayout The input method layout
+     * @param aImLayoutChanged To indicate whether Im Layout changed
+     * @return None.
+     */        
+    void ReorganizeControls(CAknFepVkbImLayout* aImLayout, TBool aImLayoutChanged);
+    
+    /**
+     * Get composition field
+     *
+     * @since S60 v3.2
+     * @return The composition field.
+     */       
+    CFepLayoutEditAreaBase* CompositionField();
+
+    /**
+     * Add controls into client area
+     *
+     * @since S60 v3.2
+     * @param aControl The control which will be added into client area
+     * @return The composition field.
+     */       
+    void AddControlL(CFepUiBaseCtrl* aControl); 
+    
+    /**
+     * Is there need to create new word
+     *
+     * @since S60 v3.2
+     * @return ETrue if need to create new word, otherwise EFalse
+     */       
+    TBool NeedCreateWord();
+ 
+    /**
+     * Get layout ID
+     *
+     * @since S60 v3.2
+     * @param aRange The current range
+     * @return The composition field.
+     */   
+    TAknFepVkbLayout ShiftCapsSingleVkbLayoutId( TInt aRange );
+    
+    /**
+     * Is next candidate after last page exist?
+     *
+     * @since S60 v3.2
+     * @return ETrue if candidate eixst, otherwise EFalse
+     */       
+    void SetNextCandidateExistFlag(TBool aFlag);
+    
+    /**
+     * Set if enable switch to hwr
+     *
+     * @since S60 v3.2
+     * @param aEnable The enable flag
+     * @return None
+     */ 
+    void SetEnableSwitchToHwr(TBool aEnable);
+    
+    /**
+     * Active current range
+     *
+     * @since S60 v3.2
+     * @return None
+     */ 
+    void ActiveCurrentRange();
+    
+    /**
+     * Return the spell for new created words.
+     *
+     * @since S60 v3.2
+     * 
+     * @return The buffer for the gernated spell.
+     */ 
+    TPtrC GetCreatedWordSpell();
+
+    void SetVkbLayoutSize(TInt aVkbLayoutId = -1);
+    
+    /**
+     * Change Shift and CapsLock merged button status
+     *
+     * @since Series 60 3.2
+     * @param aIsShiftCase The Shift case
+     * @param aIsCapslockCase The CpasLock case
+     * @return None
+     */  
+    void ChangeMergedButtonStatus( const TInt aIsShiftCase, 
+    							   const TInt aIsCapslockCase ); 
+    							   
+    void ShowBubble(TBool aShow);
+    
+    void ReorganizeZhuYinControls( TBool aShowArrowKey );
+    
+    /**
+     * Dim arrow keys when the editor type is
+     * find pane or secret editor
+     *
+     * @since S60 v3.2
+     * @param aIsSecret The flag
+     * @return None
+     */          
+    void DimArrowKeys( TBool aDimArrow );
+       
+protected:
+
+    /**
+     * Constructor function
+     *
+     * @since S60 v3.2
+     * @param aUiLayout The layout plugin
+     * @param aControlId This control ID
+     * @param aDataProvider The interface of data provider
+     * @return None.
+     */ 
+    CAknFepVkbClientArea(CFepUiLayout* aUiLayout, 
+                         TInt aControlId,
+                         MAknFepVkbDataProvider* aDataProvider,
+                         CPeninputCnGenericVkbLafMgr* aLafMgr);
+                         
+    /**
+     * 2nd construct function
+     *
+     * @since Series 60 3.2
+     * @return None
+     */
+    void ConstructL();
+    
+    /**
+     * Get default vkb layout according to range
+     *
+     * @since Series 60 3.2
+     * @param aRange the current range
+     * @return The default vkb layout.
+     */    
+    TAknFepVkbLayout GetDefaultVkbLayout(const TInt aRange);      
+
+    /**
+     * Add drop down list into client area
+     *
+     * @since Series 60 3.2
+     * @return None
+     */
+    void AddDropdownListL();
+
+    /**
+     * Add button into client area
+     *
+     * @since Series 60 3.2
+     * @param aControlId The button ID
+     * @param aEventId The event id
+     * @param aResId The resource id
+     * @param aUnicode The unicode
+     * @param aIsRepeat The flag showing whether it is repeat button
+     * @
+     */
+    CAknFepCtrlEventButton* AddButtonL(const TInt aControlId,
+                                       const TInt aEventId,
+                                       const TInt aResId,
+                                       const TInt aUnicode = 0,
+                                       const TBool aIsRepeat = EFalse);
+
+    /**
+     * Add range bar into client area
+     *
+     * @since Series 60 3.2
+     * @return None
+     */    
+    void AddRangeBarL();
+
+
+
+    /**
+     * Reset some data in client area
+     *
+     * @since Series 60 3.2
+     * @param aImLayoutChanged To indicate whether Im Layout changed
+     * @return None
+     */      
+    void Reset(TBool aImLayoutChanged);
+
+    /**
+     * Dim keys in vkb controls
+     *
+     * @since Series 60 3.2
+     * @return None
+     */  
+    void DimKeys();
+    
+    /**
+     * Clear all candidates
+     *
+     * @since Series 60 3.2
+     * @return None
+     */      
+    void ClearCandidatesInList();
+
+    /**
+     * Calculate postion function
+     *
+     * @since S60 v3.2
+     * @return None.
+     */    
+    void CalculatePosition( TInt aJustifyMode );
+
+    /**
+     * Change window position
+     *
+     * @since S60 v3.2
+     * @return None.
+     */    
+    void TopLeftJustify();
+
+    /**
+     * Change window position
+     *
+     * @since S60 v3.2
+     * @return None.
+     */    
+    void BottomRightJustify();
+
+    /**
+     * Change window position
+     *
+     * @since S60 v3.2
+     * @return None.
+     */    
+    void DataQueryJustify();   
+        
+    /**
+     * read from resource function
+     *
+     * @since Series 60 3.2
+     * @return None
+     */     
+    void ConstructFromResourceL();
+    
+    /**
+     * Set control's text property, e.g. font,
+     * font color
+     *
+     * @since Series 60 3.2
+     * @return None
+     */     
+    void SetTextProperty();
+    
+private:
+
+    TInt FepCaseByCaseId( TInt aCaseId );
+
+    TInt CaseByShiftCapslockStatus();
+      
+    TPeninputCnCellType GetCellType(TInt aColumns);
+    
+    void DimKeysL();
+    void HandleStandby2CompositionEventL();
+           
+private:// data
+
+    /**
+     * The top parent
+     * Not own
+     */  
+    CFepUiBaseCtrl* iTopParent;
+
+
+    /**
+     * The control pooling
+     * Own
+     */ 
+    CAknFepVkbCtrlPool* iCtrlPool;
+    
+    /**
+     * The layout pooling
+     * Own
+     */ 
+    CAknFepLayoutPool* iLayoutPool;
+
+    /**
+     * The current im layout
+     * Not own
+     */ 
+    CAknFepVkbImLayout* iCurrentImLayout;
+    
+    /**
+     * The current vkb layout
+     * Not own
+     */ 
+    CPeninputVkbLayoutInfo* iCurrentVkbLayout;
+    
+    /**
+     * The data provider
+     * Not own
+     */
+    MAknFepVkbDataProvider* iDataProvider;
+    
+    /**
+     * The vkb ctrl
+     * Not own
+     */
+    CPeninputVkbCtrlExt* iVkbCtrl;
+            
+    /**
+     * Vkb layout
+     * Own
+     */ 
+    CAknFepCtrlVkbLayout* iVkbLayout;
+    
+    /**
+     * The composition field
+     * Not own
+     */
+    CAknFepVkbCompositionField* iCompositionField;
+    
+    /**
+     * The drop down list
+     * Not own
+     */
+    CFepCtrlDropdownList* iDropdownList;
+    
+    /**
+     * The range bar
+     * Not own
+     */
+    CAknFepCtrlRangeBar* iRangeBar;
+    
+
+
+    
+    /**
+     * The key mapping manager
+     * Own
+     */    
+    CAknFepVkbNumericKepMappingMgr* iKeyMappingMgr;
+    
+    /**
+     * Indicate whether control's text property have 
+     * been set, e.g. font, font color
+     */    
+    TBool iTextPropertySet;
+    
+    /**
+     * Indicate whether drop down list's text property
+     * and unit size etc. have been set
+     */    
+    TBool iDropdownPropertySet;
+    
+    CPeninputCnGenericVkbLafMgr* iLafMgr;
+    
+    CAknFepVkbWindow* iVkbCnWindow;
+
+    TInt iCharWidth;
+    TInt iCharHeight;
+
+    TPoint iCharLeftTop;   
+    
+    TInt iBtnWidth;
+    TInt iBtnHeight;
+        
+    TPoint iVkbBoardLeftTop;
+    /**
+     * Keep the current layout id
+     */     
+    TInt iVkbLayoutId;
+    /**
+     * Keep the control ID in ctrl pool not added to the control group
+     */    
+    RArray<TInt> iRemainedPoolControlIDs;
+public:
+
+    TInt iCellAidGap;
+    };  
+
+#endif // C_CAKNFEPVKBCLIENTAREA_H
+
+// End Of File