diff -r ebd48d2de13c -r ecbabf52600f textinput/peninputvkbcn/ctrlinc/peninputvkbclientarea.h --- /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 +#include + +#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 iRemainedPoolControlIDs; +public: + + TInt iCellAidGap; + }; + +#endif // C_CAKNFEPVKBCLIENTAREA_H + +// End Of File